当命令具有更改用户的命令时如何获取ssh的输出

时间:2019-05-24 07:08:45

标签: shell ssh

当我使用ssh在远程计算机上运行命令时,我将从shell获得输出。但是,如果我添加

sudo su - user2

我没有任何输出。现在,我不能做

ssh user2@host

由于某些权限问题。

有什么方法可以获取以下命令的输出?

ssh user1@host 'sudo su - user2; wc -l tmp.txt'

感谢@laenkeio。使用sudo -u user2可以运行一些简单的程序。

但是,当我需要调用需要对user2使用一些环境变量的python脚本时,该脚本无法通过使用sudo -u user2找到那些默认路径。

2 个答案:

答案 0 :(得分:0)

如果由于某些权限问题而无法执行ssh user2@host,则出于相同原因,您将无法运行ssh user1@host 'sudo su - user2; ... ...
而且,即使没有权限问题,在执行su - user时,系统也会要求您输入密码...

答案 1 :(得分:0)

如果您对host拥有适当的sudo权限,则应该能够:

ssh -t user1@host 'sudo -u user2 wc -l tmp.txt'

使用sudo -u意味着“以user2身份执行”,从而避免了多余的su -。并且-t强制ssh分配tty,以便sudo可以要求您输入密码。