Schreiben Sie ein expect
Skript.
Hier ist ein Beispiel:
#!/usr/bin/expect
#If it all goes pear shaped the script will timeout after 20 seconds.
set timeout 20
#First argument is assigned to the variable name
set name [lindex $argv 0]
#Second argument is assigned to the variable user
set user [lindex $argv 1]
#Third argument is assigned to the variable password
set password [lindex $argv 2]
#This spawns the telnet program and connects it to the variable name
spawn telnet $name
#The script expects login
expect "login:"
#The script sends the user variable
send "$user "
#The script expects Password
expect "Password:"
#The script sends the password variable
send "$password "
#This hands control of the keyboard over to you (Nice expect feature!)
interact
Ausführen:
./myscript.expect name user password
Während ich vorschlagen würde, expect
zu verwenden Auch für die nicht-interaktive Verwendung können die normalen Shell-Befehle ausreichen. telnet
akzeptiert seinen Befehl auf stdin, also müssen Sie die Befehle einfach über heredoc hineinleiten oder hineinschreiben:
telnet 10.1.1.1 <<EOF
remotecommand 1
remotecommand 2
EOF
(Edit:Den Kommentaren nach zu urteilen, braucht der Remote-Befehl etwas Zeit, um die Eingaben oder das frühe SIGHUP zu verarbeiten wird von telnet
nicht ordnungsgemäß übernommen . In diesen Fällen können Sie versuchen, den Eingang kurz zu schlafen :)
{ echo "remotecommand 1"; echo "remotecommand 2"; sleep 1; } | telnet 10.1.1.1
Wenn es interaktiv wird oder so, verwenden Sie auf jeden Fall expect
.
Telnet wird oft verwendet, wenn Sie das HTTP-Protokoll lernen. Ich habe dieses Skript früher als Teil meines Web-Scrapers verwendet:
echo "open www.example.com 80"
sleep 2
echo "GET /index.html HTTP/1.1"
echo "Host: www.example.com"
echo
echo
sleep 2
Nehmen wir an, der Name des Skripts ist get-page.sh, dann:
get-page.sh | telnet
gibt Ihnen ein HTML-Dokument.
Hoffe, es wird jemandem helfen;)