py 上传sftp文件并设置权限为777
时间: 2025-01-04 08:41:07 浏览: 8
在Python中,你可以使用`paramiko`库来实现SFTP文件上传,并设置权限。以下是一个简单的示例:
```python
from paramiko import SSHClient, AutoAddPolicy
def upload_sftp_file(host, user, password, remote_path, local_path, file_name, mode=0o777):
"""
上传文件到SFTP服务器并设置权限
:param host: SFTP服务器地址
:param user: 用户名
:param password: 密码
:param remote_path: 文件在服务器上的路径
:param local_path: 文件在本地的路径
:param file_name: 要上传的文件名
:param mode: 权限模式,如0o777表示rwx-rwx-rwx(默认)
"""
client = SSHClient()
client.set_missing_host_key_policy(AutoAddPolicy())
try:
client.connect(hostname=host, username=user, password=password, timeout=timeout)
sftp = client.open_sftp()
# 设置权限
permissions = oct(mode)[2:]
sftp.chmod(int(permissions), sftp.stat(remote_path).st_mode)
# 上传文件
with open(local_path, "rb") as f_in:
sftp.put(f_in, remote_path + "/" + file_name)
sftp.close()
client.close()
print(f"File {file_name} uploaded to {remote_path} and permission set to {mode}")
except Exception as e:
print(f"Error occurred: {str(e)}")
# 示例调用
upload_sftp_file('your_server_ip', 'your_username', 'your_password', '/path/to/destination', '/path/to/local/file.txt', 'new_file.txt')
```
在这个例子中,我们首先创建一个SSH客户端,连接到SFTP服务器,然后打开一个SFTP会话。接着,我们获取文件的权限,如果需要的话,更改它,然后将本地文件上传到指定的远程路径。最后关闭会话和连接。
阅读全文