关于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命令,跟你手动登陆过去执行命令一个效果,不过你要预判可能出现的情况。你自己手动模拟一次,然后记下关键点就可以了。
浙江启扬智能科技有限公司
2023-06-12 广告
2023-06-12 广告
Linux 嵌入式系统中,USB 启动模式能够烧写 ARM 的 uboot 的原因主要有以下几个方面:1. USB 启动模式相对于传统的 BIOS 启动模式来说,具有更高的兼容性和灵活性,可以支持更多的硬件设备和操作系统。2. USB 启动...
点击进入详情页
本回答由浙江启扬智能科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询