当我使用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
找到那些默认路径。
答案 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
可以要求您输入密码。