关于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无密码访问无效,必须要输入密码,但这个密码我想通过脚本执行自动输入) 展开
ssh user@B "echo 'passwd' | sudo -sS sh ~/test.sh"
提示要输入B服务器user密码才能成功执行B服务器上的test.sh脚本。
请问该命令用怎样的方式自动输入密码呢?(由于安全限制,配置SSH无密码访问无效,必须要输入密码,但这个密码我想通过脚本执行自动输入) 展开
展开全部
可以使用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"
更多追问追答
追答
我只是给你一个样例,expect的语法就这么简单,expect "]*"的意思是,远程登录后如果出现]* ,那就send命令,]*只是代表看到的提示符而已,如果你这个用户登录远程主机不是这个提示符,那当然不行,比如说你是root,那提示符就改成]# ,普通用户就是]$了,这样说明白吧。总之就是expect可能出现的情况,send命令,跟你手动登陆过去执行命令一个效果,不过你要预判可能出现的情况。你自己手动模拟一次,然后记下关键点就可以了。
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询