Linux-从客户端向远程服务器运行命令
我的任务是将.py文件从客户端复制到远程服务器,然后将.py脚本运行到远程服务器 注意:我需要对n台服务器执行相同的操作,所以基本上我在这里希望创建一种自动化脚本,它也会执行相同的操作 从我的同事那里我了解到,为了实现自动化,无密码登录是必须的(这是一种先决条件) 为了实现同样的目的,我首先将公钥复制到远程服务器(手动),然后创建一个脚本,该脚本执行scp操作,将shell脚本从客户端复制到远程服务器。shell脚本负责运行.py文件 添加公钥和scp对我很有效 请告诉我是否需要添加公钥来实现此任务的自动化 我是LINUX世界的初学者,如果可能的话,请在回答时详细说明答案 我的剧本:Linux-从客户端向远程服务器运行命令,linux,scp,Linux,Scp,我的任务是将.py文件从客户端复制到远程服务器,然后将.py脚本运行到远程服务器 注意:我需要对n台服务器执行相同的操作,所以基本上我在这里希望创建一种自动化脚本,它也会执行相同的操作 从我的同事那里我了解到,为了实现自动化,无密码登录是必须的(这是一种先决条件) 为了实现同样的目的,我首先将公钥复制到远程服务器(手动),然后创建一个脚本,该脚本执行scp操作,将shell脚本从客户端复制到远程服务器。shell脚本负责运行.py文件 添加公钥和scp对我很有效 请告诉我是否需要添加公钥来实现此
#!/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
请让我知道,如果添加公钥实际上是需要的
实现此任务的自动化
是的,您需要将主/控制器节点(您打算从中执行scp的节点)的公钥复制到所有其他节点/服务器
建议1: 我假设,您需要的不是一次性任务,而是长期管理的解决方案(如果我弄错了,请纠正我) 使用配置管理工具-根据您的情况,使用单个管理节点,仅部署.py脚本 我建议使用Ansible。使用Anisable,您可以从控制器节点开始,创建资源清册(主机/机器列表),并在所有节点/机器上共享控制器的公钥 您所需要做的就是(一旦设置完成,这非常简单),更新playbook,甚至从controller/main服务器为所有服务器执行一个命令
以下是一些简单易懂的英文博客:
- 李>
免责声明:我是上述博客文章的作者。如果你想要详细的答案,你需要写一个详细的问题。从您所说的,甚至不清楚
scp
是否在没有密码的情况下工作。如果有,您需要帮助的部分是什么?如果没有,它到底要求什么(可能还有私钥的密码短语)以及您是如何复制私钥的(以便有人可以检查您是否正确地复制了私钥)。如果没有精确的命令和精确的输出,我们无法判断您可能做错了什么。对于前面提到的问题,答案是肯定的,复制密钥是必要的,因为这就是您将如何进行身份验证(除非您有Kerberos并且通过票证进行身份验证)。然而,这不仅仅是复制;您必须将密钥放入授权密钥列表中。您可能需要查看ansible,它可以完成这项工作:您只需使用ssh并登录到服务器,然后根据需要发出命令。关于使用IP.1连接ssh有很多信息。)切勿在脚本文件中写入密码。2.)切勿在程序参数中写入密码!程序参数在Unix系统上是公共的,可以使用ps-ef
轻松显示。看起来非常有用。让我先试试,然后让你知道。嗯,你最好。因为它将提供一致性、可扩展性和最低限度的管理。它是否也适用于CentOS?