我需要在远程计算机上执行一些操作,首先我以userA身份登录然后更改为userB
ssh userA@remoteHost
userA$ 'sudo su userB'
键入userA的密码以更改为userB。 做其他操作如userB
我想通过从本地计算机运行脚本到远程计算机来实现此目的。
localUser$ ssh userA@remoteHost 'bash -s' < script
在脚本中,有些事情是这样的:
#!/bin/bash
sudo su userB
....
perform other operations as userB
此时我运行此脚本时会要求userA密码首先运行脚本。然后要求userA切换到userB的密码。但由于提示不存在,我无法输入任何内容。怎么做到这一点?
答案 0 :(得分:0)
但由于提示不存在,我无法输入任何内容。怎么做到这一点?
您已将script
定向到ssh
命令的标准输入,因此脚本正在尝试读取script
中的内容(但在刷新剩余的内容之前,这是一个很好的以交互方式阅读密码的做法。
如果要自动执行交互式操作,请使用expect
脚本。如果要使用上面的脚本,请先将其复制到服务器,然后将其作为
localUser$ ssh -t userA@remoteHost "./script"
答案 1 :(得分:0)
而不是sudo su userB
,
你可以使用sudo -S su - userB