Wie erstelle ich eine Skript-Shell, um cmd über Telnet zu senden und nur Ergebnisse zu protokollieren?

993
Simon

Ich möchte ein Shellskript erstellen, das eine Reihe von IPs über Telnet aufruft, einen Befehl sendet und das Ergebnis in eine Datei schreibt.

0
Windows hat Telnet -f, Linux hat diesen Weg. Der Skriptbefehl oder der Tee-Befehl http://stackoverflow.com/questions/12121241/can-i-grep-telnet-command-output barlop vor 9 Jahren 0

1 Antwort auf die Frage

0
glenn jackman

ssh ist einfacher als telnet:

for host in host1 host2 host3; do ssh user@host remote_command with args  done > result.file 

Richten Sie für die Anmeldung ohne Kennwort die SSH-Schlüssel ein


Das wird Fehler haben, aber so etwas wie:

#!/usr/bin/env expect exp_internal 1 set out [open "results.txt" w] foreach ip $argv { spawn telnet $ip expect "password: " send "$password\r" expect "% " ;# this is the prompt, adjust to suit sent "the command\r" expect -re "([01,]+).*% " puts $out "$ip=$expect_out(1,string)" send exit expect eof exp_close wait } close $out 
Danke, aber meine Geräte unterstützen nur Telnet. Ich muss diesen Befehl senden: Status. Das Ergebnis kann sein: 0,0,0,0,0,0 oder 1,1,1,1,1 oder eine Mixkombination. Ich möchte nur das Ergebnis in eine Datei einfügen. Ist es möglich Wie folgt: 192.168.1.1 = 0,0,0,0,0,0 192.168.1.2 = 1,0,0,0,0,0 192.168.1.3 = 0,1,0,0,0,0 192.168. 1,4 = 0,0,1,0,0,0 192,168,1,5 = 0,1,0,0,1,0 Simon vor 9 Jahren 0