Die beste Möglichkeit, diese Art der Eingabe zu automatisieren, ist die Verwendung von expect
oder besser pexpect
. Die meisten Server sind mit Python ausgestattet, zumindest mit einer modernen Distribution.
Sie sagten zuerst, dass Ihre VM nicht expect
installiert ist? Ich bin nicht sicher, warum das wichtig ist. Gibt es einen Grund, warum Sie unter Ihrem lokalen Konto nichts installieren oder ausführen können?
Nächste Überlegung, warum müssen Sie überhaupt passwd
??? Sie können ein Kennwort auch ändern, indem Sie den in angegebenen Hash ersetzen /etc/shadow
. Sie müssten natürlich zuerst einen Hash korrekt generieren, aber solange Sie einen unterstützten Hash verwenden, sollte er wie erwartet funktionieren. Nun, wie Sie eine solche Aktion schreiben würden, ist eine Übung, die Sie trainieren müssen.
Ich möchte auch erwähnen, passwd
liest nicht die Eingabe von STDIN. Wenn ich mich nicht irre, liest es aus einem tty. Also keine ausgefallene Kombination von nur echo
und sleep
würde funktionieren. Die Verwendung eines HEREDOC ist zwar möglich, setzt jedoch voraus, dass das System ausreichend reaktionsfähig ist. Sie können es unter Umständen in zwei sleep
Teile aufteilen. Ich habe das gerade getestet, es funktionierte auf meiner Ubuntu-Workstation.
#!/bin/bash passwd root <<'EOF' newpassword newpassword EOF