0

问题:

如何成功地将 sed 与 python 一起使用?我必须在远程服务器上运行此命令才能获取以逗号分隔的主机列表。当从 bash 运行时,我得到了我想要的东西,比如 host1、host2、host3

这是我所拥有的:

process = subprocess.Popen(["ssh $USER@mychefserver knife search node "chef_environment:*" | grep -i "node name" | egrep -i "stuff|ruff" | uniq -u | sort -n | cut -d ":" -f 2 | sed -e 's/^[ \t]*//' | tr '\n' ', '
"], shell=False, stdout=PIPE)

我知道我将不得不逃避 \n、\t 等,但我在其他方面遇到了麻烦。每当我尝试从我的 Python 脚本运行它时,我都会收到无效语法的错误,即使我已经尝试了很多转义。

4

1 回答 1

2

"当您在双引号字符串中使用时,您的字符串引用被破坏。你得逃之"类的\"。进一步注意,命令行中的大多数双引号都可以替换为单引号'。以下代码应该可以工作:

process = subprocess.Popen(["ssh $USER@mychefserver knife search node \"chef_environment:*\" | grep -i 'node name' | egrep -i 'stuff|ruff' | uniq -u | sort -n | cut -d':' -f 2 | sed -e 's/^[ \t]*//' | tr '\n' ', '"], shell=False, stdout=subprocess.PIPE)
于 2013-05-02T22:06:57.550 回答