用于将软件从本地计算机安装到远程计算机的 shell 脚本

用于将软件从本地计算机安装到远程计算机的 shell 脚本

我是 shell 脚本的新手,我必须将软件从本地计算机安装到远程计算机。1. 脚本应该连接远程计算机,如果已连接,则创建一个新文件夹,然后安装位于本地计算机上的软件,如果计算机未连接,则显示错误消息(主机未连接)。2. 如果未启用端口号 22,则应绕过或使用 8080 端口号连接并安装软件。请帮我编写和执行脚本。

答案1

我认为这个问题已在另一篇文章中得到解答,请先阅读这篇文章,如果您没有得到答案或者您有具体的问题,请随意修改您的问题。

https://unix.stackexchange.com/questions/92664/how-to-deploy-programs-on-multiple-machines

我粘贴了答案供您参考。谢谢特登对于这个答案。

您可以使用这种方法轻松地设置对每台机器的无密码访问:

安装sshpass在本地机器上

sudo apt-get install sshpass 这将允许您将密码作为命令行参数传递:

sshpass -p '<password>' ssh user@server 创建 ssh 密钥

ssh-keygen -t rsa 您可以通过允许空密码来简化事情(这个答案的其余部分将假定您已经这样做了,如果您的安全问题禁止这样做,请告诉我,我会进行相应的修改)。

创建一个文件,包含您感兴趣的所有 IP 及其各自的用户名和密码,每行一个:

1.2.3.4 bob bobs_password
11.22.33.44 hary harrys_password 

现在,使用 sshpass 复制您的密钥文件,并且 - 只要您使用空密码 - 允许无密码访问所有机器:

while read ip user pass; do 
  sshpass -p "$pass" ssh ssh-copy-id -i ~/.ssh/id_rsa.pub $user@$ip;
done < ips.txt

现在您已经设置了无密码访问权限,请在每台机器上安装您的软件(假设 $user 可以运行 apt-get,基本上 $user 是 root):

 while read ip user pass; do 
   ssh $user@$ip "apt-get install package; 
 done < ips.txt

相关内容