gpt4 book ai didi

python - Paramiko sed 查找和替换不会通过

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:44 31 4
gpt4 key购买 nike

我目前正在编写一个脚本,当我启动一个 EC2 实例时,我会发送一个 paramiko 命令来重命名主机名。因为这是一个自定义 AMI,我无法使用 AWS Boto3 CLI 来执行它,所以我需要通过 SSH 命令来执行它。

我遇到的问题是,Paramiko 似乎无法通过我的特定命令。它会很好地传递其他命令,但我假设我遇到了 paramiko 或 python 的某种限制并且似乎无法解决它。这是针对 RHEL 实例的,因此重命名网络文件是我能想到的唯一方法。

如果我按原样通过主机的终端运行命令,它就可以工作。所以 paramiko 和这个命令之间的某些东西似乎是障碍。

这是我的示例脚本,它应该可以工作,但似乎无法运行命令。

#!/usr/bin/env python
import boto3
import time
import subprocess
import paramiko
import StringIO

c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())

c.connect(hostname = '12.34.56.78', username = "username", key_filename='''/Users/mallachar/Downloads/testkey.pem''' )
stdin , stdout, stderr = c.exec_command('sudo sed -i -E "s/^HOSTNAME.*/HOSTNAME=testhost.company/" /etc/sysconfig/network')

print stdout.read()
print stderr.read()

c.close

这是我打印标准输出和标准错误

sudo: sorry, you must have a tty to run sudo

最佳答案

很简单,我必须将它添加到命令中。

get_pty=True

所以

stdin , stdout, stderr = c.exec_command('sudo sed -i -E "s/^HOSTNAME.*/HOSTNAME=testhost.company/" /etc/sysconfig/network',get_pty=True)

关于python - Paramiko sed 查找和替换不会通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40293313/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com