利用shell脚本执行ssh远程另一台主机执行命令并返回命令的结果集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用shell脚本执行ssh远程另一台主机执行命令并返回命令的结果集相关的知识,希望对你有一定的参考价值。

参考技术A 假设从主机A,检查主机B上的进程,
需要在主机B上建立检查用户,例如叫x,
并设置通过public key认证登录SSH,不会可以google搜一下,
然后,在A机器上执行:
ssh x@B ~/command.sh > result.txt
command.sh就是B机器上放置在x目录下的脚本。
输出结果应该是写到了result.txt
或者另一种写法
result=`ssh x@B ~/command.sh`
结果直接保存到result变量中了。
暂时没有linux环境,所以没有实际测试,你自己试试吧
免费提供最新Linux技术教程书籍,入门自学书籍《linux就该这么学》,为开源技术爱好者努力做得更多更好本回答被提问者采纳

如何在 shell 脚本中使用 ssh?

【中文标题】如何在 shell 脚本中使用 ssh?【英文标题】:How do you use ssh in a shell script? 【发布时间】:2010-09-06 22:36:59 【问题描述】:

当我尝试在 shell 脚本中使用 ssh 命令时,该命令就在那里。你有一个如何在 shell 脚本中使用 ssh 的例子吗?

【问题讨论】:

【参考方案1】:

取决于你想做什么,以及你如何使用它。如果您只想在另一台机器上远程安全地执行命令,只需使用

ssh user@host command

例如

ssh user@host ls

为了安全地执行此操作,您需要在运行时向用户询问密码,或者在远程主机上设置密钥。

【讨论】:

+1 表示完整性、简单性和简洁性......有一个示例来引导!【参考方案2】:

首先,您需要确保已设置无密码(公钥登录)。至少有两种配置文件格式略有不同的 ssh。检查系统上的 ssh 手册页,咨询本地系统管理员或前往 How do I setup Public-Key Authentication?。

要以批处理模式(例如在 shell 脚本中)运行 ssh,您需要传递要运行的命令。语法是:

ssh host command

如果您想同时运行多个命令,请使用引号和分号:

ssh host "command1; command2"

需要引号来保护分号免受 shell 解释器的影响。如果您将它们排除在外,则只有第一个命令将远程运行,其余所有命令将在本地计算机上运行。

【讨论】:

这在 Mac OS 上是否存在,或者这只是 Linux 的东西?是的,我刚刚读过how to get this hat。不过想发表有意义的评论。【参考方案3】:

您需要将您的 SSH 公钥放入远程主机上的 ~/.ssh/authorized_keys 文件中。然后,您将能够通过 SSH 连接到该主机而无需密码。

您也可以使用ssh-agent。我建议不要将密码存储在脚本中。

【讨论】:

【参考方案4】:

您可以使用expect 命令填充用户名/密码信息。

【讨论】:

您的意思是export 命令吗?它可用于设置用户名(LOGNAMEUSER),但不能用于设置密码。【参考方案5】:

最简单的方法是为运行脚本的用户使用证书。

一个更复杂的方法是在 shell 命令要求时将密码添加到标准输入。期望,perl 库,向用户显示询问密码的提示(如果是交互式的,至少),有很多选择。

【讨论】:

我不明白,对不起。我不奇怪你被否决了。恕我直言,您应该尝试更具体,因为您似乎在猜测。老实说,这肯定对任何人都没有帮助。

以上是关于利用shell脚本执行ssh远程另一台主机执行命令并返回命令的结果集的主要内容,如果未能解决你的问题,请参考以下文章

要在一台主机上执行shell脚本判断另一台上的某个文件是不是存在,这个shell语句该怎么写?

本地shell脚本中ssh到远程服务器并执行命令

linux怎么远程执行另一台linux机器上的shell文件?

linux下如何使用ssh远程登录主机 执行shell脚本?

linux远程通过shell脚本执行另一台linux机器上的shell文件

怎么在一个shell脚本中执行远程主机的另一个shell脚本?? ssh已经可以无密码登录了。