关于linux ssh的问题。现有两台服务器A和B,A要控制B上的脚本运行。

在A服务器上执行如下命令:sshuser@B"echo'passwd'|sudo-sSsh~/test.sh"提示要输入B服务器user密码才能成功执行B服务器上的tes... 在A服务器上执行如下命令:
ssh user@B "echo 'passwd' | sudo -sS sh ~/test.sh"
提示要输入B服务器user密码才能成功执行B服务器上的test.sh脚本。
请问该命令用怎样的方式自动输入密码呢?(由于安全限制,配置SSH无密码访问无效,必须要输入密码,但这个密码我想通过脚本执行自动输入)
展开
 我来答
wang_huan1990
2016-10-05 · TA获得超过635个赞
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:246万
展开全部
可以使用expect脚本实现自动交互,当然你本机需要安装expect
#!/usr/bin/expect
set user "userB"
set passwd "12345678"
spawn ssh $user@B
expect{
"yes/no" {send "yes\r";exp_continue}
"password:" {send "$passwd\r"}
}
expect "]*"
send "/bin/bash ~/test.sh\r"
expect "]*"
send "exit\r"
更多追问追答
追问

你的命令1——9行的命令可以ssh到B主机了,但10——12行的命令执行了不起作用啊

下面是执行结果

B主机上的/home/pkg_isv02/test.sh脚本还是没有执行呀?

追答
我只是给你一个样例,expect的语法就这么简单,expect "]*"的意思是,远程登录后如果出现]* ,那就send命令,]*只是代表看到的提示符而已,如果你这个用户登录远程主机不是这个提示符,那当然不行,比如说你是root,那提示符就改成]# ,普通用户就是]$了,这样说明白吧。总之就是expect可能出现的情况,send命令,跟你手动登陆过去执行命令一个效果,不过你要预判可能出现的情况。你自己手动模拟一次,然后记下关键点就可以了。
快又稳
2024-10-28 广告
Apache基于域名的虚拟主机配置主要涉及到在Apache配置文件中为不同域名指定不同的网站目录和日志路径。配置时,需确保域名已正确指向服务器的IP地址。在Apache的`httpd-vhosts.conf`或类似配置文件中,为每个域名创建... 点击进入详情页
本回答由快又稳提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式