Python paramiko执行sud

2024-09-30 04:34:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用paramikoput方法将文件从本地服务器发送到远程服务器。 但是,我在执行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命令,以便可以从远程读取传输的文件?在

谢谢你!在


Tags: 文件方法import命令服务器权限paramiko远程
1条回答
网友
1楼 · 发布于 2024-09-30 04:34:23

不,你不能这样。。。不过,您可以通过使用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使用''或空字符串作为密码提示

在调用open_ssh之前,不能exec_command中简单地使用sudo su - username,因为对{}的每个调用都运行在自己的子shell中,因此更改不会传播回主会话

相关问题 更多 >

    热门问题