我有两个问题:

  1. 有多台远程linux机器,我需要编写一个shell脚本,在每台机器上执行相同的命令集.(包括一些sudo操作).如何使用shell脚本实现这一点?
  2. 当ssh连接到远程机器时,如何处理它提示RSA fingerprint 身份验证.

远程机器是在运行时创建的虚拟机,我只有它们的IP.所以,我不能预先在这些机器中放置脚本文件,然后从我的机器上执行它们.

推荐答案

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

您可以使用ssh实现这一点,例如:

#!/bin/bash
USERNAME=someUser
HOSTS="host1 host2 host3"
SCRIPT="pwd; ls"
for HOSTNAME in ${HOSTS} ; do
    ssh -l ${USERNAME} ${HOSTNAME} "${SCRIPT}"
done

当ssh连接到远程机器时,如何处理它提示RSA fingerprint 身份验证.

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

ssh -o StrictHostKeyChecking=no -l username hostname "pwd; ls"

这将自动将主机密钥添加到已知主机列表中.如果不想将主机添加到已知主机文件中,请添加选项-o UserKnownHostsFile=/dev/null.

请注意,这是disables certain security checks,例如防止中间人攻击.因此,不应将其应用于安全敏感的环境中.

Linux相关问答推荐

无法下载Centos 7上的存储库的元数据

为什么我在退出SD-Bus容器时出现错误?

没有发现运行时依赖关系,但它在S的运行时路径中有吗?

Linux和Windows x86程序集调用约定

不带空格的字符串连接形成文件路径

命令行中使用`..`为什么会导致权限被拒绝错误?

在 cURL 中使用的确切位置将字节分成一些范围部分

SessionNotCreatedException:无法启动新会话.响应代码 500 在远程服务器上的 Apache Tomcat/10.0.23 上使用 ChromeDriver

命令应在终端关闭后继续运行

如何为命令的所有选项启用无密码 sudo?

什么是`quote`命令?

在 puppet 中管理 linux 的用户密码

给定两个目录树如何找到相同的文件?

RealUID,保存的 UID,有效的 UID.这是怎么回事?

如何更改目录中所有文件中所有出现的单词

在 64 位 Linux 操作系统上编译 32 位程序导致致命错误

如何链接到 GCC 中特定版本的共享库

如何将路径名中的..转换为 bash 脚本中的绝对名称?

Python日志(log)记录 - 判断日志(log)文件的位置?

如何在 linux 中使用 CMake 和 Kdevelop 编译 GLUT + OpenGL 项目?