运行 commands/removing 个文件夹通过 paramiko
running commands/removing folders through paramiko
我无法 运行 某些命令。例如,rm 或 rmdir。
我试图通过 paramiko 删除一个文件夹,我得到了 "Command not found"。但是 "ls -l" 命令工作正常。 bash 脚本也可以正常工作。
key = paramiko.RSAKey.from_private_key_file(RSA_KEY)
with paramiko.SSHClient() as client:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(pkey=key, **SERVER_CONN)
command = "rm /home/request_files/temp/*"
in_, out_, err_ = client.exec_command(command=command)
for i in out_:
print(i)
"Command not found"
key = paramiko.RSAKey.from_private_key_file(RSA_KEY)
with paramiko.SSHClient() as client:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(pkey=key, **SERVER_CONN)
command = "ls"
in_, out_, err_ = client.exec_command(command=command)
for i in out_:
print(i)
目录 1
目录 2
dir3
等等
我还有一个 bash 脚本,可以正常工作:
sftp -P ${SERVER_PORT} ${SERVER_USERNAME}@${SERVER_HOST} <<EOF
rm ${dir1}/*
rmdir ${dir1}
EOF
感谢@martyn,我找到了解决这个问题的方法
def open_sftp(files_folder_name):
key = paramiko.RSAKey.from_private_key_file(RSA_KEY)
with paramiko.SSHClient() as client:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(pkey=key, **SERVER_CONN)
with client.open_sftp() as sftp:
files = sftp.listdir(path=files_folder_name)
for f in files:
sftp.remove(f"{files_folder_name}/{f}")
sftp.rmdir(files_folder_name)
我无法 运行 某些命令。例如,rm 或 rmdir。
我试图通过 paramiko 删除一个文件夹,我得到了 "Command not found"。但是 "ls -l" 命令工作正常。 bash 脚本也可以正常工作。
key = paramiko.RSAKey.from_private_key_file(RSA_KEY)
with paramiko.SSHClient() as client:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(pkey=key, **SERVER_CONN)
command = "rm /home/request_files/temp/*"
in_, out_, err_ = client.exec_command(command=command)
for i in out_:
print(i)
"Command not found"
key = paramiko.RSAKey.from_private_key_file(RSA_KEY)
with paramiko.SSHClient() as client:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(pkey=key, **SERVER_CONN)
command = "ls"
in_, out_, err_ = client.exec_command(command=command)
for i in out_:
print(i)
目录 1
目录 2
dir3
等等
我还有一个 bash 脚本,可以正常工作:
sftp -P ${SERVER_PORT} ${SERVER_USERNAME}@${SERVER_HOST} <<EOF
rm ${dir1}/*
rmdir ${dir1}
EOF
感谢@martyn,我找到了解决这个问题的方法
def open_sftp(files_folder_name):
key = paramiko.RSAKey.from_private_key_file(RSA_KEY)
with paramiko.SSHClient() as client:
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(pkey=key, **SERVER_CONN)
with client.open_sftp() as sftp:
files = sftp.listdir(path=files_folder_name)
for f in files:
sftp.remove(f"{files_folder_name}/{f}")
sftp.rmdir(files_folder_name)