如何在 Django 上使用 paramiko 处理 awk 逗号? [复制]
Posted
技术标签:
【中文标题】如何在 Django 上使用 paramiko 处理 awk 逗号? [复制]【英文标题】:How to deal with awk commas using paramiko on Django? [duplicate] 【发布时间】:2019-03-09 22:47:00 【问题描述】:stdout = session.exec_command('''find -name "*" -type f -exec stat -c "%n %y" <--**This is bash, not variable of format** + | awk " print $1" "$2 " | grep -v word'''
.format(VARIABLE1, VARIABLE2))
我在Django 1.9.13上使用paramiko 2.4做这段代码,不知道怎么处理,错误是:
KeyError at /get_xml/index/ ' print $1" "$2 '
更新:
它现在没有崩溃,但没有返回任何东西,但如果我在 bash 上这样做,它正在工作,认为缺少一些东西......
command = find -name '*.xml' -type f -exec stat -c '%n %y' + | awk 'print $1, $2, $3' | grep -v 'word'
stdout = session.exec_command(command)
回答
ssh.connect(hostname=VARIABLE1, username=VARIABLE2)
command = "find -name '*.xml' -type f -exec stat -c '%n %y' + | awk 'print $1, $2, $3' | grep -v WHATIDONTWANTTO".format(VARIABLE3, WHATIWANTTOSEARCH)
_, stdout, _ = ssh.exec_command(command)
for item in stdout:
#do whatever with items
pass
终于成功了,最后一种方法是使用 session = ssh.get_transport().open_session() 但它总是检索“Nonetype”
【问题讨论】:
VARIABLE3 丢失。 更新,属于bash命令,不是python变量 awk " print $1,$2 "awk
不起作用。将其更改为 awk 'print $1 " " $2'
或更简单的 awk 'print $1, $2'
除了花括号问题,不能在双引号字符串中使用双引号。您的 awk 脚本应该改为单引号。 (另外,避免使用useless use of grep
;,或者更好的是,在 Python 中进行输出过滤。)
【参考方案1】:
根据documentation on .format
,如果您需要在文字文本中包含大括号字符,可以通过加倍将其转义: 和 。
所以如果我正确理解您的评论,这个-exec stat -c "%n %y"
应该是-exec stat -c "%n %y"
等等。
【讨论】:
以上是关于如何在 Django 上使用 paramiko 处理 awk 逗号? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS Elastic Beanstalk 上使用 Nginx、React、Webpack、Gunicorn、PostgreSQL、Django 和 DRF 部署应用程序?如何使用此应用程序处
代码发布项目——django实现websocket(使用channels)基于channels实现群聊功能gojs插件paramiko模块