Ich versuche, einen SSH-Befehl auszuführen, der die /etc/shadow
Datei ausdruckt. Offensichtlich erfordert diese Datei Root- oder sudo
Berechtigungsrechte, und ich habe keine Root-Anmeldeinformationen, daher muss ich verwenden sudo
.
Hier ist der Befehl, den ich ausgearbeitet habe:
expect -c 'spawn -noecho ssh -q -t -S /tmp/t2.ssh dummy "sudo cat /etc/shadow";expect "assword"; send "password99\r";interact'
Es gibt genau das aus, was ich brauche, aber es gibt in der allerersten Zeile auch die Eingabeaufforderung für das Sudo-Passwort aus:
[sudo] password for student99:
root:$x$xxx:18029:0:99999:7:::
daemon:*:17575:0:99999:7:::
bin:*:17575:0:99999:7:::
sys:*:17575:0:99999:7:::
sync:*:17575:0:99999:7:::
Gibt es ohne die Verwendung anderer Programme (wie grep, awk, tail usw.) eine Möglichkeit, den expect
Befehl so zu ändern, dass nur die Ausgabe des Cat-Befehls und nicht die [sudo] password for student99:
Eingabeaufforderung ausgedruckt wird?
Lösung:
Dank @larsks lautet mein endgültiger funktionierender Befehl:
expect -c 'spawn -noecho ssh -q -t -S /tmp/t2.ssh dummy "sudo cat /etc/shadow";log_user 0;expect "assword"; send "password99\r";interact'
Antwort1
Sie können die Ausgabeprotokollierung deaktivieren, indem Sie Folgendes einstellen log_user 0
.die Dokumente:
log_user -info|0|1
By default, the send/expect dialogue is logged to stdout (and a logfile if
open). The logging to stdout is disabled by the command "log_user 0" and
reenabled by "log_user 1". Logging to the logfile is unchanged.
The -info flag causes log_user to return a description of the most recent
non-info arguments given.