本地VSCode运行Proxmox操作Python脚本报错,服务器端运行正常
问题分析与解决
错误原因
- 脚本中
subprocess.getstatusoutput('sudo pct status ' + container)这行代码是在本地PC执行命令,但本地Windows系统没有Proxmox专属的pct命令,因此出现“命令不被识别”的报错。 - 在Proxmox服务器的VSCode Server运行时,
subprocess是在服务器本地执行,服务器本身自带pct命令,所以运行正常。
修复后的代码
把执行pct status的逻辑也通过netmiko发送到Proxmox服务器远程执行,而非在本地调用subprocess。修改后的代码如下:
from netmiko import ConnectHandler import re linux = { 'device_type': 'linux', 'ip': '1.1.1.1', 'username': 'my_username', 'password': 'my_pass', 'port': 1111, 'verbose': True } connection = ConnectHandler(**linux) output = connection.send_command('sudo pct list | tail -n +2') pattern = "\d{3}" getConID = re.findall(pattern, output) print(getConID) # 通过netmiko远程执行pct status命令 for container in getConID: exec_output = connection.send_command(f'sudo pct status {container}') print(exec_output) connection.disconnect()
额外注意事项
- 确保Proxmox服务器上的用户拥有无需输入密码即可执行
sudo pct的权限(可修改/etc/sudoers配置,添加your_username ALL=(ALL) NOPASSWD: /usr/sbin/pct),避免脚本执行时卡在密码输入环节。 - 本地Windows系统不支持Linux的
sudo、pct等命令,所有针对Proxmox的操作命令都必须通过netmiko远程执行。
内容的提问来源于stack exchange,提问作者Dvir Horev
相关产品推荐
相关产品推荐

