我试图通过ssh发送此命令:
ssh <user1>@<ip1> ssh <user2>@<ip2> /opt/user/bin -f /opt/user/slap.conf -l /home/admin/`date +%Y%m%d`_Export_file$nr.gz -s "ou=multi" -a "(& (entry=$nr)(serv=PS))" -o wrap=no
这个命令是自定义的,所以不要混淆这个... 但是它没有被执行,就像:意外的那样(
如果我登录服务器并发出此命令,则会正确执行。所以我认为它应该是括号和括号规则。
有人可以帮助我吗?
提前谢谢。
答案 0 :(得分:1)
您需要转义引号,可能需要两次,因为每次调用ssh都会涉及剥离图层。将转义的单引号放在整个命令周围,然后在内部命令周围嵌套未转义的单引号:
ssh <user1>@<ip1> \'ssh <user2>@<ip2> '/opt/user/bin -f /opt/user/slap.conf -l /home/admin/`date +%Y%m%d`_Export_file$nr.gz -s "ou=multi" -a "(& (entry=$nr)(serv=PS))" -o wrap=no'\'
顺便说一下,这假设您需要解压缩反引号并在ip2
上执行命令,而不是事先在源计算机上执行,并且类似于$nr
变量的解码。目前尚不清楚如何解释它们。