2016-05-04 13 views
1

Ich versuche, ein Skript erwartet in Linux zu schreiben, die folgenden Job tun muss.überprüfen Sie, ob Remote-Datei einen anderen Betrieb existiert und führt in erwarten Skript

  • Login entfernten Windows-Rechner mit ssh
  • Überprüfen Sie, ob eine bestimmte Datei vorhanden ist
  • Zeitstempel einer anderen Datei auf dem gleichen Weg vergleichen und drucken, wenn es neuere

In Schritt 1 ist, Ich versuche, einen Befehl zu senden, um zu überprüfen, ob die Datei existiert, aber es funktioniert nicht.

Das Ergebnis immer enthält den Befehl Ich sende nicht die Ausgabe FOUND oder NOTFOUND. Kann mir jemand sagen, was ich hier falsch mache?

+0

Ich habe das Gefühl, dass die Windows-, Bash- und Batchdatei-Tags nicht hierher gehören, aber ich weiß nicht genug über das, was Sie sicher wissen wollen. – SomethingDark

+0

Wenn Sie nicht mit einem alten Mac (bis Mac OS 9) sprechen, ist das Senden von '\ r' normalerweise falsch. – IInspectable

+0

@somethingdark Ich benutze expect-Skript zum Ausführen von Windows-Befehle auf dem Remote-Server – Nagarjun

Antwort

1

Statt Mustern mit Ihrem Skript Anpassung versucht, den Puffer manuell zu verarbeiten, sondern macht die falsche Annahme, dass der Puffer nur den Text enthält „(NOT) gefunden“. Der Puffer enthält tatsächlich alles, was seit der letzten Verwendung des Befehls expect empfangen wurde. die Saiten „FOUND“ und „NOTFOUND“ in dem Befehl, den Sie senden, die höchstwahrscheinlich durch die Sie Echo zurück: Auch wenn es den Puffer richtig gemacht übereinstimmen (zB mit string match *NOTFOUND* $result), wäre es jedoch von the echo problem betroffen SSH-Server.

Die folgende Änderung des Skripts Hacks um das Echo Problem, indem sie nicht die wörtlichen Strings sendet es erwartet.

Es funktioniert für mich mit dem Bitvise SSH Server auf der Windows-Seite.

+0

Awesome, Sie treffen das Bullseye. Ich habe das Echoproblem hier verpasst :-) – Nagarjun