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

Linux-从客户端向远程服务器运行命令,linux,scp,Linux,Scp,我的任务是将.py文件从客户端复制到远程服务器,然后将.py脚本运行到远程服务器 注意:我需要对n台服务器执行相同的操作,所以基本上我在这里希望创建一种自动化脚本,它也会执行相同的操作 从我的同事那里我了解到,为了实现自动化,无密码登录是必须的(这是一种先决条件) 为了实现同样的目的,我首先将公钥复制到远程服务器(手动),然后创建一个脚本,该脚本执行scp操作,将shell脚本从客户端复制到远程服务器。shell脚本负责运行.py文件 添加公钥和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
请让我知道,如果添加公钥实际上是需要的 实现此任务的自动化

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


建议1: 我假设,您需要的不是一次性任务,而是长期管理的解决方案(如果我弄错了,请纠正我)

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

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

您所需要做的就是(一旦设置完成,这非常简单),更新playbook,甚至从controller/main服务器为所有服务器执行一个命令


以下是一些简单易懂的英文博客:



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

如果你想要详细的答案,你需要写一个详细的问题。从您所说的,甚至不清楚
scp
是否在没有密码的情况下工作。如果有,您需要帮助的部分是什么?如果没有,它到底要求什么(可能还有私钥的密码短语)以及您是如何复制私钥的(以便有人可以检查您是否正确地复制了私钥)。如果没有精确的命令和精确的输出,我们无法判断您可能做错了什么。对于前面提到的问题,答案是肯定的,复制密钥是必要的,因为这就是您将如何进行身份验证(除非您有Kerberos并且通过票证进行身份验证)。然而,这不仅仅是复制;您必须将密钥放入授权密钥列表中。您可能需要查看ansible,它可以完成这项工作:您只需使用ssh并登录到服务器,然后根据需要发出命令。关于使用IP.1连接ssh有很多信息。)切勿在脚本文件中写入密码。2.)切勿在程序参数中写入密码!程序参数在Unix系统上是公共的,可以使用
ps-ef
轻松显示。看起来非常有用。让我先试试,然后让你知道。嗯,你最好。因为它将提供一致性、可扩展性和最低限度的管理。它是否也适用于CentOS?