问题标签 [plumbum]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用 plumbum 捕获前台命令的错误输出
我正在使用 plumbum python 库 (http://plumbum.readthedocs.org/) 作为 shell 脚本的替代品。
我想运行一个命令,当它失败时,它会输出我感兴趣的文件的路径:
我想在前台运行程序来检查进度:
当slow_cmd
失败时,它会抛出异常(我可以捕获)。但我无法从异常或f
未来对象中获取错误输出。
如果我不在slow_cmd
FG 上运行,异常包含所有输出,我可以从那里读取文件。
python - 避免在 plumbum 中转义 glob 表达式
假设我想运行类似ls a*
使用的东西plumbum。
我知道铅会自动逃避争论,这通常是一件好事。但是有没有办法让它理解 glob 表达式应该按原样传递给 shell?
python - 在铅锤上使用 python 运行 sudo 命令的问题
我正在使用 Python 2.7 和来自 mac 端口的最新铅包。
一般来说,铅效果很好。虽然我有一段时间让 sudo'd 命令工作。我已经为我想要运行的命令设置了我的 /etc/sudoers,而无需提示,所以这很好。我可以手动运行命令而不会出现问题。
但是,当我使用这个从 python 尝试相同的操作时:
我收到以下错误:
plumbum.commands.processes.ProcessExecutionError:命令行:['/usr/bin/sudo','-u userfoo']
退出代码:1
标准错误:| sudo:未知用户:userfoo
用户确实存在,所以不完全确定这里的交易是什么。
注释?
python - 铅泄漏 Popen 对象
我有一个类似守护进程的进程,它使用plumbum
. 我注意到它会泄漏Popen
物体。
易于复制:
这是一个错误吗?(我找不到在哪里报告铅中的错误......)
我还“试验”了修改泄漏Popen
对象,试图打破引用循环(假设存在一个,导致泄漏),但它没有帮助。
在 linux 上运行,plumbum 版本 1.14.0。
python - 如何在 python 中自动化远程部署?
我想自动化目前我正在手动执行的远程部署。
该过程包括
- 从某些文件夹中制作 tar 球
- SFTP 到远程服务器
- 重命名旧文件夹
- 解压新的 tar 文件
- 重启阿帕奇
远程系统在 Intranet 上,无法访问外部 Internet
我想知道如何从我的 python 脚本传输文件,然后在传输完成后登录 ssh 并做一些事情。我对如何实现这一目标感到困惑。在本地主机上,我可以做到所有这些,但我如何在远程主机上做到这一点?
python - 有没有办法在输出时打印标准输出?
如果我跑了
它会无限期地挂起,因为 ping 永远执行。
有没有办法在执行时打印 ping 的输出,可能在生成器或其他东西中,比如
python - Python铅锤:在cmd参数中传递$
我正在尝试使用铅在 python 中执行以下命令:
但是,我在通过-t$'\t'
论点时遇到问题。这是我的代码:
我可以立即看到问题print separator
并print cmd()
执行:
- 参数用双引号括起来。
- 在 $ 和 \t 之前插入一个额外的 \。
我应该如何将这个论点传递给铅?
python - 执行从 Python 文件中读取为字符串的复杂 Shell 命令
我有一个配置文件,用户可以在其中指定一组 shell 命令。命令基本上是一系列以管道分隔的 shell 命令。
我能够阅读我的 Python 脚本中的命令。我的问题是如何在 Python 中运行这些读取命令字符串并获得输出。
任何带有subprocess
, plumbum
,的解决方案都是sh
可以接受的。
python - 从列表中将参数传递给 python plumbum 命令
我正在使用Plumbum在 Python 的前台运行命令行实用程序。如果你有一个命令foo x y z
,你会像这样从 Plumbum 运行它:
然而,在我正在编写的代码中,参数['x', 'y', 'z']
被生成到一个列表中。我不知道如何解压此列表以将其作为参数发送给铅。有什么建议么?
ssh - plumbum:SSH 到我的远程服务器
美好的一天,我在 anaconda 上使用铅连接到我的远程服务器 A。
我创建了一个新用户 linux2 并为该用户分配了一个公钥。然后将 .ssh 和 authorizedkeys 的权限更改为
chmod 700 /home/linux2/.ssh chmod 600
/home/linux2/.ssh/authorized_keys
当我尝试代码时:
我收到以下错误:请协助
CommandNotFound Traceback (last last call last) in () 1 # YOUR CODE HERE 2 from plumbum import SshMachine ----> 3 rem=SshMachine("000.000.131.110",user="linux2",password = "password")
C:\ProgramData\Anaconda3\lib\site-packages\plumbum\machines\ssh_machine.py in init (self, host, user, port, keyfile, ssh_command, scp_command, ssh_opts, scp_opts, password, encoding, connect_timeout, new_session) 77如果 ssh_command 为 None: 78 如果密码不是 None: ---> 79 ssh_command = local["sshpass"]["-p", password, "ssh"] 80 else: 81 ssh_command = local["ssh"]
C:\ProgramData\Anaconda3\lib\site-packages\plumbum\machines\local.py in getitem (self, cmd) 206 else: 207 # 搜索命令 --> 208 return LocalCommand(self.which(cmd)) 209 else: 210 raise TypeError("cmd 不能是 RemotePath: %r" % (cmd,))
C:\ProgramData\Anaconda3\lib\site-packages\plumbum\machines\local.py 其中(cls, progname) 176 if path: 177 return path --> 178 raise CommandNotFound(progname, list(cls.env.path )) 179 180 def 路径(self, *parts):
CommandNotFound: ('sshpass', [, , , , , , , , , , , , , , , , , , , , , , ])