我的问题是将.py文件从客户端计算机复制到远程服务器,然后将.py脚本运行到远程服务器。
注意:我需要为n个服务器执行相同的操作,所以基本上我在这里想要创建一种自动化脚本,它将执行相同的操作。
从我的同事那里我了解到,为了实现自动化,密码少登录是必须的(一种先决条件)。
为了实现相同目的,我首先将一个公钥复制到我的远程服务器(手动),然后创建一个脚本,该脚本执行scp将shell脚本从客户端复制到远程。 shell脚本负责运行.py文件。
添加公钥和scp为我工作。
如果实际需要添加公钥来实现此任务的自动化,请告诉我。
我是LINUX世界的初学者,所以如果可能请在回复时详细说明答案。
我的剧本:
#!/bin/bash
# Linux/UNIX box with ssh key based login
Script=/home/linuxadmin/installer_linux.py
Destination=/home/linuxadmin/script
time=`date`
output=/home/linuxadmin/output_mainscript/
USERNAME=abc@some.com
PASSWORD=12345
#Loop For Installing software on multimple servers
for f in `cat host.txt`;
do
scp $Script $f:$Destination ### Copying file from source to destination
echo "-------- start time "$time"echo "----------"" | tee -a $output/mainscript_log.txt
sshpass ssh $f "sudo /usr/bin/python $Destination/installer_linux.py --no-prompt -u $USERNAME -p $PASSWORD " | tee -a $output/mainscript_log.txt ### Executing files on Destination
echo "-------- End time "$time"echo "----------"" | tee -a $output/mainscript_log.txt
done
答案 0 :(得分:1)
如果确实需要添加公钥,请告诉我 实现这项任务的自动化。
是的,您需要将主/控制器节点(您打算执行scp的节点)的公钥复制到所有其他节点/服务器。
建议1 : 我假设,你想要一些解决方案不仅仅是一次性任务,而是长期管理(纠正我,如果我弄错了)。
使用配置管理工具 - 根据您的情况,单个管理节点,仅部署.py脚本,
我建议使用Ansible。使用Anisble,您可以从控制器节点开始,制作清单(主机/机器列表),并在所有节点/机器上共享控制器的公钥。
所有你需要做的事情(一旦设置完成,这很简单) - 更新playbook,甚至从控制器/主服务器执行所有服务器的命令。
以下是一些非常简单的英文博客:
免责声明:我是上述博文的作者。