ssh 远程命令作为不同的用户
ssh remote command as different user
为什么这个命令的 awk
部分没有得到处理。当我 运行 直接作为 user1
.
时它起作用
[zimmerman@SERVER1 check]# su user1 -c "ssh -i /home/user1/.ssh/id_rsa -q user1@SERVER2 df -h /dir1/dir2 | awk '{print }'"
Filesystem Size Used Avail Use% Mounted on
/dev/sdf1 1008G 204M 957G 1% /dir1/dir2
当你将所有这些东西组合在一起时,你需要确保你转义了所有你现在不想评估的重要字符,但稍后会。 $
就是一个很好的例子。
$ su user1 -c "ssh -i [...] -q user1@SERVER2 df -h /dir1/dir2 | awk '{print }'"
计算当前 bash 中的 </code>,这是你不想要的。你可以看到它,如果你 运行 简单地 </p>
<pre><code>$ echo "ssh -i [...] -q user1@SERVER2 df -h /dir1/dir2 | awk '{print }'"
ssh -i [...] -q user1@SERVER2 df -h /dir1/dir2 | awk '{print }'
所以要修复,需要对$
符号进行转义,比如
$ echo "ssh -i [...] -q user1@SERVER2 df -h /dir1/dir2 | awk '{print $5}'"
ssh -i [...] -q user1@SERVER2 df -h /dir1/dir2 | awk '{print }'
TL;DR:所以你应该使用的最终命令行是
su user1 -c "ssh -i /home/user1/.ssh/id_rsa -q user1@SERVER2 df -h /dir1/dir2 | awk '{print $5}'"
为什么这个命令的 awk
部分没有得到处理。当我 运行 直接作为 user1
.
[zimmerman@SERVER1 check]# su user1 -c "ssh -i /home/user1/.ssh/id_rsa -q user1@SERVER2 df -h /dir1/dir2 | awk '{print }'"
Filesystem Size Used Avail Use% Mounted on
/dev/sdf1 1008G 204M 957G 1% /dir1/dir2
当你将所有这些东西组合在一起时,你需要确保你转义了所有你现在不想评估的重要字符,但稍后会。 $
就是一个很好的例子。
$ su user1 -c "ssh -i [...] -q user1@SERVER2 df -h /dir1/dir2 | awk '{print }'"
计算当前 bash 中的 </code>,这是你不想要的。你可以看到它,如果你 运行 简单地 </p>
<pre><code>$ echo "ssh -i [...] -q user1@SERVER2 df -h /dir1/dir2 | awk '{print }'"
ssh -i [...] -q user1@SERVER2 df -h /dir1/dir2 | awk '{print }'
所以要修复,需要对$
符号进行转义,比如
$ echo "ssh -i [...] -q user1@SERVER2 df -h /dir1/dir2 | awk '{print $5}'"
ssh -i [...] -q user1@SERVER2 df -h /dir1/dir2 | awk '{print }'
TL;DR:所以你应该使用的最终命令行是
su user1 -c "ssh -i /home/user1/.ssh/id_rsa -q user1@SERVER2 df -h /dir1/dir2 | awk '{print $5}'"