In der Linux PC/Server-Befehlszeile und Bash-Sprache stelle ich eine Methode vor, um automatisch über expect SSH zu Servern herzustellen, bei denen das Weglassen von Passwörtern nicht möglich ist.
Für VPS und Ihre eigenen Server ist es in Ordnung, aber im Fall von Xserver ist das Weglassen des SSH-Passworts irgendwie nicht möglich.
Ich habe es mit expect geschafft, also stelle ich es vor.
expecto(){
: usage: expecto [command] [password]
# e.g. expecto 'ssh -R 52698:localhost:52698 -p 10022 -i ~/.ssh/example.key [email protected]' "${PASSWORD}"
cat << EOT > ~/tmp/tmp && chmod 755 ~/tmp/tmp && ~/tmp/tmp && > ~/tmp/tmp
#!/usr/bin/expect -f
# exp_internal 1 ; # uncomment to turn on expect debugging
set timeout -1
spawn ${1}
expect {
"passphrase" {
send "${2}\n"
interact
exit 0
}
"password" {
send "${2}\n"
interact
exit 0
}
}
EOT
}
Beim direkten Schreiben des SSH-Befehls
expecto 'ssh -R 52698:localhost:52698 -p 10022 -i ~/.ssh/yuis.key [email protected]' $XSERV_PASSWORD
Bei Verwendung eines Alias-SSH-Befehls muss er erweitert werden
alias xserv='ssh -R 52698:localhost:52698 -p 10022 -i ~/.ssh/yuis.key [email protected]'
expecto \"$(echo ${BASH_ALIASES[xserv]})\" $XSERV_PASSWORD
Bei Verwendung benutzerdefinierter Bash-Befehle
expecto 'bash -ic "sharefile hoge.md"' $XSERV_PASSWORD