我想用os.popen()在Python上通过SSH执行这4个命令。Python中的多个命令
问题在于awk命令,尤其是引号。
这是我必须转换:
ssh -o BatchMode=yes -o StrictHostKeyChecking=no $host 'echo "<td>" $(uname -ri) "</td>"; free | grep "Mem:" | awk '\''{ print "<td>" $2/1024 " MB (" int($4*100/$2) "%) </td>" }'\''; free | grep "Swap:" | awk '\''{ print "<td>" int($3*100/$2) "%" }'\''; echo "</td><td>" $(cat /proc/cpuinfo | grep "processor" | wc -l) "@" $(cat /proc/cpuinfo | grep "MHz" | sort -u | awk '\''{ print $4 }'\'') "Mhz" $(cat /proc/cpuinfo | grep "cache size" | sort -u | awk '\''{ print "(" $4 " " $5 ")</td>" }'\'')'
以下是我已经试过了,但它在最后的命令一些报价错误出现。这个问题似乎与awk的引号有关。另外,我想将它们合并成一个SSH实例。
os.popen("ssh 127.0.0.1 'echo \"<td>\" $(uname -ri) \"</td>\"'").read()
os.popen("ssh 127.0.0.1 free | grep \"Mem:\" | awk '{print \"<td>\" $2/1024 \" MB(\"int($4*100/$2)\"%)</td>\"}'").read()
os.popen("ssh 127.0.0.1 free | grep \"Swap:\" | awk '{ print \"<td>\" int($3*100/$2) \"%\" }'").read()
os.popen("ssh 127.0.0.1 'echo \"</td><td>\" $(cat /proc/cpuinfo | grep \"processor\" | wc -l) \"@\" $(cat /proc/cpuinfo | grep \"MHz\" | sort -u | awk '{ print $4 }') \"Mhz\" $(cat /proc/cpuinfo | grep \"cache size\" | sort -u | awk '{ print \"(\" $4 \" \" $5 \")</td>\" }')'").read()
请帮忙。一套可用的命令将不胜感激。
感谢
数据我想这os.popen('''ssh 127.0.0.1'echo“”$(uname -ri)“”; free | grep“Mem:”| awk'{print“”$ 2/1024“MB(”int $ 4 * 100/$ 2)“%)“}''''').read() – user2359303
但是,这给出了一个错误sh:1:语法错误:”(“unexpected – user2359303