Plink多命令输出同行问题:如何实现各命令输出换行?
解决Plink执行多命令输出合并为一行的问题
我来帮你搞定这个输出换行的问题,根源主要是远程命令执行时的输出格式或者Plink的交互模式导致的,试试下面几个实用方法:
方法1:将com.txt中的命令拆分为单独行
把你的com.txt内容改成每行一个命令,去掉&&连接:
date hwclock
远程shell会分别执行每个命令,每个命令的输出本身就带有换行符,最终写入out.txt时自然就是分开的两行,这是最直接的解决方式。
方法2:强制Plink使用伪终端模式
在Plink命令里添加*-t*参数,强制分配伪终端。默认的非交互式模式下,Plink可能会简化输出格式,导致换行被合并:
os.system('plink -ssh -t -l root 192.168.107.3 -pw xxxxx -m "c:\Users\XXXX\Desktop\com.txt" > "c:\Users\xxx\Desktop\out.txt" 2>&1')
这个参数会让远程shell误以为是在终端环境下执行命令,输出的换行符就能被正确保留下来。
方法3:手动插入可靠的换行符
如果一定要用&&连接命令,可以在两个命令之间用printf '\n'手动插入换行(比echo更可靠,能避免不同shell的行为差异):
date && printf '\n' && hwclock
这样执行时会在date的输出后插入一个换行,再执行hwclock,最终输出就会分成两行。
你之前试的echo " "没用,大概率是因为远程shell里echo输出的是空格而非换行,或者输出被Plink的非交互模式处理掉了,试试上面的方法应该就能解决问题啦。
内容的提问来源于stack exchange,提问作者Amrit Swaroop Sinha
相关产品推荐
相关产品推荐

