我有一个非常长的字符串ssh_cmd,我从
得到它cmd = """kill -9 `ps -ef|grep "udp_receiver"|grep -v "grep"|awk '{print $2}'`"""
HostName="133.33.22.1"
ssh_cmd = """ssh -t inria_spoofing@{0} 'sudo nohup bash -c "{1} > /nohup.out 2>&1 &"'""".format(HostName, cmd)
结果ssh_cmd
是:
ssh -t kitty@133.33.22.1 'sudo nohup bash -c "kill -9 `ps -ef|grep "udp_receiver"|grep -v "grep"|awk '{print $2}'` > /nohup.out 2>&1 &"'
然而,当我跑步时,我害怕
child = pexpect.spawn(ssh_cmd)
有问题, 那么如何组织字符串? 谢谢!
答案 0 :(得分:0)
要回答这个问题,请选择正确的ssh_cmd
:ssh -t kitty@133.33.22.1 "sudo nohup bash -c \"kill -9 \\\`ps -ef | grep 'udp_receiver' | grep -v 'grep' | awk '{print \\\$2}'\\\` > /nohup.out 2>&1 &\""
基本上,每次将此命令嵌入另一个命令时,您需要在命令中转义双引号,反引号和反斜杠。我没有使用单引号,除了在较低级别,因为你不能在单引号内使用转义单引号。
当它只是一个引用双引号的字符串中的字符时,你也需要转义$
,即使字符串也包含单引号。