Linux - 从客户端将命令运行到远程服务器

时间:2017-04-12 06:31:14

标签: linux scp

我的问题是将.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

1 个答案:

答案 0 :(得分:1)

  

如果确实需要添加公钥,请告诉我   实现这项任务的自动化。

是的,您需要将主/控制器节点(您打算执行scp的节点)的公钥复制到所有其他节点/服务器。

建议1 : 我假设,你想要一些解决方案不仅仅是一次性任务,而是长期管理(纠正我,如果我弄错了)。

使用配置管理工具 - 根据您的情况,单个管理节点,仅部署.py脚本,

我建议使用Ansible。使用Anisble,您可以从控制器节点开始,制作清单(主机/机器列表),并在所有节点/机器上共享控制器的公钥。

所有你需要做的事情(一旦设置完成,这很简单) - 更新playbook,甚至从控制器/主服务器执行所有服务器的命令。

以下是一些非常简单的英文博客:

免责声明:我是上述博文的作者。