我尝试在多个Linux服务器上使用python脚本运行远程命令。我的参数包含嵌套的单引号和双引号,所以我无法弄清楚应该在哪里使用转义字符。这是我使用的命令(争论类似于用户名密码命令hosts_file log_file)。但没有机会:
python mssh.py myusername mypassword "pmksh -c \"for host in `df -h | grep \"/nfs/oracle\" | awk ' {print $5} '`; do umount $host; done && chmod 777 /nfs/oracle && cp /etc/fstab /etc/fstab.`date +\"%Y%m%d\"` && sed 's/enas_share_oracle/oracle_share/g' /etc/fstab > /etc/fstab.tmp && mv /etc/fstab.tmp /etc/fstab && sed '/^pxeitnas.*oracle/s/ro,/rw,/' /etc/fstab > /etc/fstab.tmp && mv /etc/fstab.tmp /etc/fstab && mount /nfs/oracle \" " ./hosts ./log_file
基本上我需要以root身份运行此命令,并且权限管理器shell(pmksh)需要将整个命令作为参数,因此我使用了\"。 Python脚本也需要所有的命令作为参数,所以我使用双引号w / o转义。但是这个命令不会在目标主机上运行。没有给出错误消息但未完成所需的操作。