#!/bin/bash
/usr/bin/expect << SSHLOGIN
spawn ssh -o StrictHostKeyChecking=no [email protected]$host
expect {
Password: {
send "Pass$word\n"
expect {
OK: {
send "xstatus\n"
send "quit\n"
}
}
}
}
SSHLOGIN
這是無法通過ssh,因爲它不是在逃避「通行證$字\ N」的「$」字符,因爲$是密碼的一部分並沒有傳遞變量。你會如何逃避它?我知道在bash中,你會添加'\',但由於密碼在期望腳本部分,所以不起作用。
編輯: 改變Pass$word\n
到Pass\\\$word\n
作品
您可以刪除,如果你的報價逃脫你的定界符的一層:'期待<<「SSHLOGIN'' –
@glennjackman這也將禁止在ssh主機$擴張命令。 –
是真的,我錯過了。 –