Linux - 运行 从客户端到远程服务器的命令
Linux - Running commands into a remote server from a client
我的要求是将 .py 文件从我的客户端计算机复制到远程服务器,然后 运行 将 .py 脚本复制到远程服务器。
注意:我需要对 n 台服务器执行相同的操作,所以基本上我在这里是想创建一种自动化脚本来执行相同的操作。
我从同事那里了解到,为了实现自动化,无密码登录是必须的(一种先决条件)。
为了达到同样的目的,我首先将 public 密钥复制到我的远程服务器(手动),然后创建一个执行 scp 的脚本,将 shell 脚本从客户端复制到远程. shell 脚本负责 运行 .py 文件。
添加 public 密钥和 scp 对我有用。
如果确实需要添加 public 键来实现此任务的自动化,请告诉我。
我是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
Kindly do let me know if adding the public key is actually needed for
achieving the automation for this task .
是的,您需要将 main/controller 节点(您打算从中执行 scp 的节点)的 public 密钥复制到所有其他 nodes/servers.
建议 1:
我假设,您想要的解决方案不仅仅是一次性任务,而是长期管理(如果我弄错了,请纠正我)。
使用配置管理工具 - 根据您的情况,单个管理节点,仅部署 .py 脚本,
我推荐使用 Ansible。使用 Anisble,您可以从一个控制器节点开始,进行清单(hosts/machines 的列表),并在所有 nodes/machines.
上共享控制器的 public 密钥
您需要做的(一旦设置完成,这非常简单)- 更新剧本,甚至从 controller/main 服务器为所有服务器执行命令。
这里有一些非常简单的英文博客可以开始使用:
免责声明:我是以上博文的作者。
我的要求是将 .py 文件从我的客户端计算机复制到远程服务器,然后 运行 将 .py 脚本复制到远程服务器。
注意:我需要对 n 台服务器执行相同的操作,所以基本上我在这里是想创建一种自动化脚本来执行相同的操作。
我从同事那里了解到,为了实现自动化,无密码登录是必须的(一种先决条件)。
为了达到同样的目的,我首先将 public 密钥复制到我的远程服务器(手动),然后创建一个执行 scp 的脚本,将 shell 脚本从客户端复制到远程. shell 脚本负责 运行 .py 文件。
添加 public 密钥和 scp 对我有用。
如果确实需要添加 public 键来实现此任务的自动化,请告诉我。
我是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
Kindly do let me know if adding the public key is actually needed for achieving the automation for this task .
是的,您需要将 main/controller 节点(您打算从中执行 scp 的节点)的 public 密钥复制到所有其他 nodes/servers.
建议 1: 我假设,您想要的解决方案不仅仅是一次性任务,而是长期管理(如果我弄错了,请纠正我)。
使用配置管理工具 - 根据您的情况,单个管理节点,仅部署 .py 脚本,
我推荐使用 Ansible。使用 Anisble,您可以从一个控制器节点开始,进行清单(hosts/machines 的列表),并在所有 nodes/machines.
上共享控制器的 public 密钥您需要做的(一旦设置完成,这非常简单)- 更新剧本,甚至从 controller/main 服务器为所有服务器执行命令。
这里有一些非常简单的英文博客可以开始使用:
免责声明:我是以上博文的作者。