expect
產生一個新的子shell,因此當地bash
變量失去其範圍,以實現這一目標的一個方法是export
您的變量來使其可用於子shell。使用內置的Tcl env
在腳本中導入這些變量。
#!/bin/bash
export pwdir="test123"
export ip="10.9.8.38"
export user=$1
/usr/bin/expect <<EOD
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no "$env(user)"@"$env(ip)" df -h
expect "*assword:"
send "$env(pwdir)\n"
interact
EOD
(OR)如果你不感興趣,直接使用expect
腳本以#!/usr/bin/expect
她爆炸,你可以這樣做
#!/usr/bin/expect
set pwdir [lindex $argv 0];
set ip [lindex $argv 1];
set user [lindex $argv 2];
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected]$ip df -h
expect "*assword:"
send "$pwdir\n"
interact
,並運行腳本
./script.exp "test123" "10.9.8.38" "johndoe"
希望這可以幫助:http://www.thegeekstuff.com/2010/10/expect-examples/ – OscarAkaElvis