2016-04-18 8 views
1

Ich bin mit dem nächsten expect Skript So um die running-config eines Schalters zu bekommen und es dann in eine Datei speichern:Wie kann ich spezielle Zeichen von erwarten entfernen?

#!/usr/bin/expect 

set timeout 9 
set username [lindex "foo"] 
set password [lindex "bar"] 
set hostname [lindex "1.2.3.4"] 

spawn ssh -q [email protected]$hostname 

expect { 
    timeout { send_user "\nTimeout!\n"; exit 1 } 
    "*assword" 
} 

send "$password\n" 

expect { 
    timeout { send_user "\nWrong password\n" ; exit 1 } 
    "switch-00>" 
} 

send "enable\n" 

expect { 
    "switch-00#" 
} 

send "show running-config\n" 
log_file -noappend log.txt 

expect { 
    -ex "--More--" { send -- " "; exp_continue } 
    "*#" { log_file; send "exit\r" } 
} 

send "exit\n" 

close 

Es funktioniert, wie es für dieses ausnehmen soll:

--More--^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H 

die jedes Mal in log.txt erscheint "--More--" wird gedruckt.

Es ist kein Thema zu entfernen „--Mehr--“ später bash verwenden, aber wenn ich es tue:

grep "^H" log.txt 

gibt es keinen Ausgang, also kann ich es nicht entfernen, da es nicht übereinstimmt.

Ich habe versucht, einen Weg zu finden, keine speziellen Zeichen mit expect auszugeben, wenn möglich, aber habe keine gefunden, also frage ich hier, falls jemand weiß.

Eine Lösung mit bash würde mir auch helfen, aber expect ist bevorzugt.

+0

kann nicht eingestellt Sie die 'konfigurieren Anschlusslänge 0 ', so dass Sie nicht bekommen,' --Mehr - 'in der Ausgabe? – Dinesh

+0

Nein, es ist ein Lenovo-Schalter, scheint keine solche Option zu haben. – sysfiend

Antwort

1

Sie könnten das bash tr Dienstprogramm verwenden. Von der man Seite

NAME 
tr -- translate characters 

DESCRIPTION 
The tr utility copies the standard input to the standard output with sub- 
situation or deletion of selected characters. 

SYNOPSIS 
tr [-Ccsu] string1 string2 
tr [-Ccu] -d string1 

-C  Complement the set of characters in string1, that is ``-C ab'' 
     includes every character except for `a' and `b'. 

-c  Same as -C but complement the set of values in string1. 

-d  Delete characters in string1 from the input. 

To Strip out non-printable characters from file1. 

tr -cd "[:print:]\n" < file1 # This is all you need. 
+0

Yup, es funktionierte, aber es konvertierte die ganze Datei in nur eine Zeile, irgendeine Idee, wie man es so wie es war? – sysfiend

+0

Aktualisierte Antwort, um das ursprüngliche Dateiformat beizubehalten. – Inian

+0

Ja, hat gut funktioniert, vielen Dank Kumpel! – sysfiend

Verwandte Themen