Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法通过Paramiko编辑远程VM中的文件_Python_File_Ssh_Paramiko - Fatal编程技术网

Python 无法通过Paramiko编辑远程VM中的文件

Python 无法通过Paramiko编辑远程VM中的文件,python,file,ssh,paramiko,Python,File,Ssh,Paramiko,我正在尝试配置一个拥有Ubuntu 14.04云映像的远程虚拟机来安装绑定DNS服务器。目前,我可以使用以下方式通过SSH连接到it中: ssh.connect( hostname = dns_ip , username = "ec2-user", pkey = k ) 我还可以使用以下工具在/tmp目录中编辑/创建文件: stdin, stdout, stderr = ssh.exec_command("cat >> /tmp/named.conf.local") stdin.w

我正在尝试配置一个拥有Ubuntu 14.04云映像的远程虚拟机来安装绑定DNS服务器。目前,我可以使用以下方式通过SSH连接到it中:

ssh.connect( hostname = dns_ip , username = "ec2-user", pkey = k )
我还可以使用以下工具在
/tmp
目录中编辑/创建文件:

stdin, stdout, stderr = ssh.exec_command("cat >> /tmp/named.conf.local")
stdin.write('key ' + domain +'. {\n')
stdin.flush()
stdin.write('algorithm "HMAC-MD5";\n')
stdin.channel.shutdown_write()
但是,我无法在
/etc
目录中执行同样的操作。我试过:

  • 使用以下命令更改文件权限:

    channel = ssh.invoke_shell() 
    channel.send("sudo chmod 755 /etc/bind/named.conf.local")
    
  • 在远程VM中生成脚本以执行相同的任务

  • 将文件从服务器复制到远程目录

  • 似乎我无法更改写入所需的文件权限,并且我使用的图像没有密码(我只能通过密钥文件访问它)。请帮助我,我被困了5个小时

    在使用“root”以SSH方式连接到虚拟机后,我能够编辑文件

    ssh.connect( hostname = dns_ip , username = "root", pkey = k )
    

    以root身份SSH我遵循了这个链接上的说明

    在使用“root”SSH到VM之后,我能够编辑文件

    ssh.connect( hostname = dns_ip , username = "root", pkey = k )
    

    要将SSH作为root用户,我遵循了此链接上的说明

    如果您有python2,您可以尝试使用fabric,或者只需查看其代码并检查fabric如何调用paramikoor,或者目标文件是不可变的。使用lsattr/etc/bind/named.conf.local仔细检查目标文件非常可编辑。我可以使用SSH直接访问虚拟机,并以root用户身份对其进行编辑。然而,我不能对python paramiko库做同样的事情。这里有一个很好的例子:日志说什么?logging.getLogger(“paramiko”).setLevel(logging.DEBUG)如果你有python2,你可以试试fabric,或者只是看看它的代码,看看fabric如何调用paramikoor,或者目标文件是不可变的。使用lsattr/etc/bind/named.conf.local仔细检查目标文件非常可编辑。我可以使用SSH直接访问虚拟机,并以root用户身份对其进行编辑。然而,我不能对python paramiko库做同样的事情。这里有一个很好的例子:日志说什么?logging.getLogger(“paramiko”).setLevel(logging.DEBUG)