繁体   English   中英

Python paramiko执行sudo

[英]Python paramiko executing sudo

我正在使用paramiko put方法将文件从本地发送到远程服务器。 但是,我在执行sudo su - user命令以从远程查看文件时遇到问题。 我还尝试了从本地更改权限,但是文件权限在传输时保持不变。

import paramiko

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

ssh.connect(<Host>, username=<User Name>, password=<Password)

sftp = ssh.open_sftp()
sftp.put(<Source>, <Destination>)
sftp.close()

有没有一种方法可以使用paramkio执行sudo su - user命令,以便可以从远程读取传输的文件?

谢谢!

不,您不能执行此操作...但是您可以通过在文件上传后使用sudo移动文件来解决该问题

import paramiko

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

ssh.connect(<Host>, username=<User Name>, password=<Password)

sftp = ssh.open_sftp()
sftp.put(<Source>, destination_i_CAN_write_to)
sftp.close()

#now move the file to the sudo required area!
stdin, stdout, stderr = ssh.exec_command("sudo -S -p '' mv /uploaded/path/to/file.txt /restricted/sudo/path/file.txt",**kwargs)
stdin.write(SUDO_PASSWORD + "\n")
stdin.flush()

sudu上的-S标志告诉它期望密码来自stdin

-p ''标志告诉sudo使用''或空字符串作为密码提示

不能简单地使用sudo su - usernameexec_command调用之前open_ssh ,因为每次调用exec_command在自己的子shell运行,这样的更改将不会传播回主会议

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM