Expect命令在Linux中再次要求输入密码

时间:2014-06-20 09:13:03

标签: linux shell redhat

我是Linux Shell Scripting的新手。我需要执行一个shell脚本,它分别获取用户名,密码,主机名,命令执行1,2,3,4个参数。我使用了expect命令,但它再次提示输入密码。该脚本的主题是从远程服务器执行命令。密码安全问题不是问题。主要问题是不得提示我输入密码。我必须为大约80台服务器运行这个,所以我不能每次都提供密码。请帮我解决这个问题。

我的剧本:

echo username = $1
echo Password = $2
echo Host-Name = $3
echo Command to Be executed = $4
expect -c "spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no $1@$3 $4; expect \"*assword:*\"; send "$2"; interact
#expect eof
"

我的输出:

username = root
Password = root@123
Host-Name = host-name
Command to Be executed = ls
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no root@host-name ls
root@host-name's password:
~

1 个答案:

答案 0 :(得分:0)

首先你的索引将从0开始而不是1所以username = $ 0

你也需要设置你的变量:(这是我在服务器上使用的期望脚本)

#!/usr/bin/expect
set user [lindex $argv 0]
set password [lindex $argv 2]
set ip [lindex $argv 2]
set command [lindex $argv 3]
spawn ssh -o StrictHostKeyChecking=no "$user\@$ip"
expect "assword:"
send "$password\r";
expect "$ "
send "$command\r"
expect "$ "  
send "exit\r"