首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >编写shell脚本以ssh到远程计算机并执行命令

编写shell脚本以ssh到远程计算机并执行命令
EN

Stack Overflow用户
提问于 2012-12-18 15:15:55
回答 10查看 409.5K关注 0票数 123

我有两个问题:

  1. 有多台远程linux机器,我需要编写一个shell脚本,它将在每台机器上执行相同的命令集。(包括一些sudo操作)。如何使用外壳脚本来完成这一点?
  2. 当ssh连接到远程机器时,如何处理当它提示进行指纹验证时的问题。

远程机器是在运行时创建的虚拟机,而我只有它们的I。因此,我不能预先在这些机器中放置一个脚本文件,然后在我的机器上执行它们。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2012-12-18 15:28:08

有多台远程linux机器,我需要编写一个shell脚本,它将在每台机器上执行相同的命令集。(包括一些sudo操作)。如何使用shell脚本来实现这一点?

您可以使用ssh执行此操作,例如:

代码语言:javascript
复制
#!/bin/bash
USERNAME=someUser
HOSTS="host1 host2 host3"
SCRIPT="pwd; ls"
for HOSTNAME in ${HOSTS} ; do
    ssh -l ${USERNAME} ${HOSTNAME} "${SCRIPT}"
done

当ssh‘连接到远程机器时,如何处理提示进行RSA指纹认证的问题。

您可以将StrictHostKeyChecking=no选项添加到ssh:

代码语言:javascript
复制
ssh -o StrictHostKeyChecking=no -l username hostname "pwd; ls"

这将disable the host key check并自动将主机密钥添加到已知主机列表中。如果不希望将主机添加到已知主机文件中,请添加选项-o UserKnownHostsFile=/dev/null

请注意,此禁用某些安全检查,例如防止中间人攻击。因此,它不应该应用于安全敏感的环境中。

票数 161
EN

Stack Overflow用户

发布于 2017-10-11 18:26:16

使用apt-get install sshpass安装sshpass,然后编辑脚本,并将您的linux机器的in、用户名和密码按顺序排列。然后运行该脚本。就是这样!此脚本将在所有系统中安装VLC。

代码语言:javascript
复制
#!/bin/bash
SCRIPT="cd Desktop; pwd;  echo -e 'PASSWORD' | sudo -S apt-get install vlc"
HOSTS=("192.168.1.121" "192.168.1.122" "192.168.1.123")
USERNAMES=("username1" "username2" "username3")
PASSWORDS=("password1" "password2" "password3")
for i in ${!HOSTS[*]} ; do
     echo ${HOSTS[i]}
     SCR=${SCRIPT/PASSWORD/${PASSWORDS[i]}}
     sshpass -p ${PASSWORDS[i]} ssh -l ${USERNAMES[i]} ${HOSTS[i]} "${SCR}"
done
票数 7
EN

Stack Overflow用户

发布于 2012-12-18 16:10:43

有很多方法可以处理这个问题。

我最喜欢的方式是在远程系统上安装http://pamsshagentauth.sourceforge.net/以及您自己的公钥。(想出一种在虚拟机上安装这些文件的方法,不知何故,你已经安装了整个Unix系统,再多几个文件又有什么关系呢?)

转发ssh代理后,您现在无需密码即可登录到每个系统。

更好的是,pam模块将使用您的ssh密钥对对sudo进行身份验证,这样您就可以根据需要使用root (或任何其他用户)权限运行。

您不需要担心主机密钥交互。如果输入不是终端,那么ssh将限制您转发代理和使用密码进行身份验证的能力。

你也应该看看包,一定要看看那个站点;它有一个远程脚本的介绍。

单个脚本行可能如下所示:

代码语言:javascript
复制
ssh remote-system-name command arguments ... # so, for exmaple,
ssh target.mycorp.net sudo puppet apply
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13928116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档