我試圖從主帳戶密碼的SSH設置自動與其他從accounts.I有一個腳本命名爲AddSSH.ksh
它做到這一點setup.When這個腳本手動運行裏面,它同一時間要求相同的密碼,它基本上使用scp複製密鑰。所有的奴隸賬戶都保存在一個文件env.txt
。因此,我有一個shell腳本(run.ksh
),它從這個文件(env.txt
)中逐個讀取帳戶,然後使用expect
腳本auto_ssh.ksh
來處理交互,並輸入密碼因此。調用expect腳本shell腳本的while循環
env.txt
[email protected]
[email protected]
[email protected]
[email protected]
run.ksh:
#!/usr/bin/ksh
while read env
do
username=`echo $env | cut -d"@" -f1`;
hostname=`echo $env | cut -d"@" -f2`;
password='Unix_11'
ssh -n -o PasswordAuthentication=no ${env} ' ' 2>/dev/null
if [ $? -eq 0 ]; then
printf "\nConnection OK for : $env \n"
else
expect auto_ssh.ksh $username $hostname $password
fi
done<env.txt
auto_ssh.ksh:
#!expect
set timeout 6
set user [lindex $argv 0]
set machine [lindex $argv 1]
set password [lindex $argv 2]
spawn AddSSH.ksh $user $machine
expect "password:"
send "$password\r";
expect "password:"
send "$password\r";
interact
如果運行在S CRIPT auto_ssh.ksh
像
./auto_ssh.ksh account1 machine1 password
它運行正常,但當我把它叫做shell腳本里面,這預計腳本將退出在第二password.when我跑在調試模式下的shell腳本,我看到的是不是發送密碼第二次它從env.txt
讀取下一個env並退出。
這是在調試模式下輸出,其中失敗的線。
[email protected]'s password: + read env