我是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 '~'
您可以使用密码以下(基于密钥的)身份验证。或者你可以试着'expect'来提供密码。 –
如何处理expect命令?我已更新我的问题,请提出建议 – user3318138
任何建议。 – user3318138