我在执行一个devops脚本时遇到了错误。该脚本使用sh包(用于执行常见的unix命令pypi link)。但是,执行的命令在sh打印的消息中被截断。如何查看已执行的整个命令?
示例:
import sh
sh.ssh(host,
'rsync -av {src} {dst}'.format(src=src,
dst=dst),
_out=sys.stdout
)
生成输出,如:
INFO:sh.command:<Command '/bin/ssh dbw@ny...(77 more)' call_args {'bg': False, 'timeo...(522 more)>: starting process
我希望看到执行完整的命令,以及所有call_args。
答案 0 :(得分:1)
sh.ssh
会返回一个sh.RunningCommand
对象,您可以查询该对象以查找调用args和cmd:
import sh
a=sh.ssh(host,
'rsync -av {src} {dst}'.format(src=src,
dst=dst),
_out=sys.stdout
)
print(a.cmd)
print(a.call_args)
答案 1 :(得分:0)
在查看源代码后,看起来这是由max_len
函数的friendly_truncate
参数控制的,因此一个选项可能是直接编辑sh.py
代码并设置更高的int值:
https://github.com/amoffat/sh/blob/master/sh.py#L424
https://github.com/amoffat/sh/blob/master/sh.py#L425
或者,可能只是删除调用该函数的点。