2014-06-20 33 views
0

我是Linux Shell Scripting的新手。我需要执行一个shell脚本来获取用户名,密码,主机名,要执行的命令作为1,2,3,4参数分别。 我使用ssh,但它提示输入密码。该脚本的主题是从远程服务器执行命令。密码安全问题不是问题。 主要问题是我不能提示输入密码。请帮我解决这个问题。在命令中提供密码并执行

echo username = $1 
echo Password = $2 
echo Host-Name = $3 
echo Command to Be executed = $4 
set -x 
expect -c "spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected]$3 $4; expect \"*assword:*\"; send "$2\r";expect eof;" 

echo "===============" 

我的输出:

username = root 
Password = [email protected] 
Host-Name = host-name 
Command to Be executed = ls 
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected] ls 
[email protected]=============== 

是没有得到显示我的命令即LS输出。

后使用set -x之前预计的命令:

输出:

username = root 
Password = [email protected] 
Host-Name = host-name 
Command to Be executed = ls 
+ expect -c 'spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected] ls; expect "*assword:*"; send [email protected];expect eof;' 
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected] ls 
[email protected]+ echo 
=============== 
=============== 
++ printf '\033]0;%[email protected]%s:%s\007' root RHEL5 '~' 
+1

您可以使用密码以下(基于密钥的)身份验证。或者你可以试着'expect'来提供密码。 –

+0

如何处理expect命令?我已更新我的问题,请提出建议 – user3318138

+0

任何建议。 – user3318138

回答

0

这是为我工作:

expect -c "spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected]$3 $4; expect \"*assword:*\"; send \"$2\r\";expect eof;" 
0

您可以使用以下shell命令:

expect -c 'spawn ssh [email protected]; expect password:; send "PASSWORD\n"; interact' 

您可能没有expect在你的Linux系统,但我认为你可以很容易地安装它。

0

试试这个:

echo username = $1 
echo Password = $2 
echo IP-Address= $3 
echo Command to be executed= $4 
expect -c "spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected]$3 $4; expect \"*assword:*\"; send $2\r; expect eof" 

而对于基于密钥的登录信息,请this链接。为此,您需要使用空密码生成公钥和私钥。并将您的公钥添加到远程计算机USER/.ssh/authorized_keys。

+0

我没有得到所需的输出。它显示 username = root Password = root @ 123 Host-Name =主机名 spawn ssh -oStrictHostKeyChecking = no -oCheckHostIP =无root @主机名ls root @ 123 ============= == – user3318138

+0

我需要输出ls命令 – user3318138

+0

相同的脚本正在为我工​​作我得到'ls'输出。您能否请完整的错误日志? –

相关问题