我是 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