Python 如何为多个远程脚本执行维护单个ssh连接?
我在系统a中有一个包含数百万个文件的文件夹,而系统B在同一个网络中 计算机A-->/home/nsadmin/Folder--192.168.150.90 计算机B-->/home/nsadmin/automation.sh--192.168.150.91 假设在我的文件夹目录中,所有的百万个文件都被转储了,我现在要做的就是Python 如何为多个远程脚本执行维护单个ssh连接?,python,bash,shell,ssh,scp,Python,Bash,Shell,Ssh,Scp,我在系统a中有一个包含数百万个文件的文件夹,而系统B在同一个网络中 计算机A-->/home/nsadmin/Folder--192.168.150.90 计算机B-->/home/nsadmin/automation.sh--192.168.150.91 假设在我的文件夹目录中,所有的百万个文件都被转储了,我现在要做的就是 1 echo "Sending the files to Computer B" 2 scp -r /home/nsadmin/$folder_name nsadmin@1
1 echo "Sending the files to Computer B"
2 scp -r /home/nsadmin/$folder_name nsadmin@192.168.150.91:/home/nsadmin/$folder_name
3 ssh nsadmin@192.168.150.91 "sh /home/nsadmin/$folder_name/automation.sh $folder_name"
4 rm -rf $folder_name/
根据上面的脚本,我在做什么
- 第1行-->Echo语句
- 第2行-->将文件夹的全部内容复制到计算机B
- 第3行-->远程执行以文件夹名称作为参数运行的脚本
- 第4行-->从计算机中删除文件夹
ssh to remote machine open
--- subtask which should run in a loop till all the files in folder are done
--- subtask is copying each file to remote machine and running the automate.sh script with argument as file_name not folder_name,(logic i will modify)
--- After all the files are copyed done the loop
ssh to remote machine closed
我面临的逻辑问题:
for i in $(find /home/nsadmin/Folder -type f);do
scp -r /home/nsadmin/$i nsadmin@192.168.150.91:/home/nsadmin/$i
ssh nsadmin@192.168.150.91 "sh /home/nsadmin/automation.sh $i"
done
如果需要连续运行这些自动化作业,我建议使用。芹菜允许您创建任务队列并将其分发给工人。您甚至可以将任务安排在特定时间运行,就像cron作业一样。如果需要,您可以在不同的计算机上创建工作进程,但请注意,如果这样做,您的系统可能无法容忍分区。在多台机器上配置和安装软件的另一个软件是。您可以编写一个配置并在工作机器上安装软件,以便它们准备好开始工作。这样,您就不必每次都手动设置它们。使用
ControlMaster
。它将只为您将发出的所有命令/SCP打开单个TCP连接。在~/.ssh/config
添加中设置非常简单:
Host 192.168.150.91
ControlMaster auto
ControlPath ~/.ssh/sockets/%C
然后只需运行您的伪代码而不进行任何修改,它将执行得更快(通过单个TCP连接)。从a可以看出,脚本只使用2个ssh连接,这并不是很糟糕。不,实际上我想让它端到端,就像一次获取每个文件并发送到另一台机器做一些工作,然后将结果放入数据库。总体思路是将相同的文件发送到其他5个系统,以及执行并行操作。如果我将文件复制到机器
B
,然后我需要再次复制到C
D
E
要复制大量数据,我建议使用rsync
。另外,不是让五台计算机可以远程访问。为什么不使用一台服务器并在每台计算机上提取数据呢?我有一台服务器,但我想将相同的文件并行发送到5台计算机中的每台,在1名工作人员完成其工作后,发送第二个文件,而不应等待其他计算机完成其工作。在这里不接受随机ping用户,他们可能曾经帮助过您。