0

私は非常に長い文字列 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)

問題があるので、文字列を整理するにはどうすればよいですか? ありがとう!

4

1 に答える 1

0

質問に答えるために、ここに適切なものがありますssh_cmdssh -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 &\""

基本的に、このコマンドを別のコマンドに埋め込むたびに、コマンド内の二重引用符、バッククォート、およびバックスラッシュをエスケープする必要があります。単一引用符内でエスケープされた単一引用符を使用できないため、下位レベル以外では単一引用符を使用しませんでした。

$文字列に一重引用符が含まれていても、二重引用符で囲まれた文字列内の単なる文字である場合は、エスケープする必要もあります。

于 2013-05-01T15:12:06.393 に答える