如何使用脚本更改为远程计算机中的另一个用户

时间:2017-04-12 05:54:28

标签: bash shell ssh scripting

我需要在远程计算机上执行一些操作,首先我以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的密码。但由于提示不存在,我无法输入任何内容。怎么做到这一点?

2 个答案:

答案 0 :(得分:0)

  

但由于提示不存在,我无法输入任何内容。怎么做到这一点?

您已将script定向到ssh命令的标准输入,因此脚本正在尝试读取script中的内容(但在刷新剩余的内容之前,这是一个很好的以交互方式阅读密码的做法。

如果要自动执行交互式操作,请使用expect脚本。如果要使用上面的脚本,请先将其复制到服务器,然后将其作为

运行
localUser$ ssh -t userA@remoteHost "./script"

答案 1 :(得分:0)

而不是sudo su userB, 你可以使用sudo -S su - userB