如何通过单次SSH登录在远程RPi170执行4项Python3任务?
单次SSH会话完成多任务的实现方案
核心思路
复用单个SSH连接会话,在同一条连接内依次完成文件传输和命令执行,彻底避免多次建立连接触发的安全告警。
具体实现(基于Python的paramiko库)
- 先安装依赖库:
pip install paramiko
- 编写复用连接的代码:
import paramiko def run_single_session_tasks(): # 替换成你的服务器信息和文件路径 server_info = { "hostname": "RPi170", "username": "你的用户名", "password": "你的密码" # 推荐用密钥认证替代密码,更安全 } file_paths = { "local_mp4": "/本地路径/视频文件.mp4", "remote_mp4": "/RPi170路径/视频文件.mp4", "local_jpg": "/本地路径/图片文件.jpg", "remote_jpg": "/RPi170路径/图片文件.jpg", "touch_file": "/RPi170路径/要创建的空文件.txt", "chown_target": "/RPi170路径/要改权限的文件或目录", "chown_user_group": "目标用户:目标用户组" } # 建立单次SSH连接 ssh_conn = paramiko.SSHClient() ssh_conn.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: ssh_conn.connect(**server_info) # 用SFTP完成两次文件传输(复用当前SSH连接) sftp = ssh_conn.open_sftp() sftp.put(file_paths["local_mp4"], file_paths["remote_mp4"]) sftp.put(file_paths["local_jpg"], file_paths["remote_jpg"]) sftp.close() # 在同一个连接内执行touch命令 ssh_conn.exec_command(f'touch {file_paths["touch_file"]}') # 执行chown命令 ssh_conn.exec_command(f'chown {file_paths["chown_user_group"]} {file_paths["chown_target"]}') print("所有任务已通过单次SSH会话完成") finally: # 确保连接关闭 ssh_conn.close() if __name__ == "__main__": run_single_session_tasks()
关键要点
- 所有操作都基于同一条SSH连接,不会触发多次登录的安全事件
- 用paramiko内置的SFTP替代独立SCP会话,功能和SCP一致但能复用连接
- 命令执行通过
exec_command方法在已连接的会话内完成,无需重新建立登录
内容的提问来源于stack exchange,提问作者DaveK
相关产品推荐
相关产品推荐

