Linux 如何在machineB和machineC上通过在machineA中运行shell脚本来执行命令

Linux 如何在machineB和machineC上通过在machineA中运行shell脚本来执行命令,linux,bash,shell,unix,ubuntu,Linux,Bash,Shell,Unix,Ubuntu,我有三台机器,如下所述- machineA machineB machineC machineB和machineC具有以下目录- /bat/data/snapshot_t1/ 现在,我需要从machineA运行我的下shell脚本,并在此路径下找出machineB和machineC中的最新目录(我猜是通过登录这些机器) 下面是我的shell脚本,我知道如何使用find命令以及sort和tail获取最新目录 现在我应该从machineA运行下面的shell脚本,然后在machineB和mach

我有三台机器,如下所述-

machineA
machineB
machineC
machineB和machineC具有以下目录-

/bat/data/snapshot_t1/
现在,我需要从machineA运行我的下shell脚本,并在此路径下找出machineB和machineC中的最新目录(我猜是通过登录这些机器)

下面是我的shell脚本,我知道如何使用find命令以及sort和tail获取最新目录

现在我应该从machineA运行下面的shell脚本,然后在machineB和machineC中找到最新的目录。。怎么做

#!/bin/bash

readonly FILERS_LOCATION=(machineB machineC)
readonly DIRECTORY_LOCATION=/bat/data/snapshot_t1/

# login to machineB and find out the latest directory in machineB
dir1=`find $DIRECTORY_LOCATION -type d | sort | tail -1`; echo $dir

# login to machineC and find out the latest directory in machineC
dir2=`find $DIRECTORY_LOCATION -type d | sort | tail -1`; echo $dir
如何从machineA中运行的shell脚本登录machineB和machineC,然后在machineB和machineC上执行某些命令,并将结果返回并存储在某个变量中,比如dir1和dir2


假设登录名为
david
,假设我在machineB和machineC上也设置了密钥。

使用SSH远程执行命令,并将结果传输到另一个程序/shell脚本中进行处理<代码>sshuser@hostyourscript.sh | anotherscript.sh

sshuser@hostyourscript.sh
在远程计算机上执行命令,并在
stdout
上打印结果,这样您就可以捕获它并将其重定向到文件(
ssh)user@hostyourscript.sh>result.txt
)以稍后处理,或直接将其导入另一个脚本(
ssh)user@hostyourscript.sh | anotherscript.sh


您可以检查
$?
变量以了解远程命令的退出状态。

使用SSH远程执行该命令,并将结果导入另一个程序/shell脚本以对其进行处理。
SSHuser@hostyourscript.sh | anotherscript.sh

sshuser@hostyourscript.sh
在远程计算机上执行命令,并在
stdout
上打印结果,这样您就可以捕获它并将其重定向到文件(
ssh)user@hostyourscript.sh>result.txt
)以稍后处理,或直接将其导入另一个脚本(
ssh)user@hostyourscript.sh | anotherscript.sh


您可以检查
$?
变量以了解远程命令的退出状态。

您可以将
machineA
的公钥复制到
david@machineB
david@machineC
搜索
ssh-keygen
ssh-copy-id

设置密钥后,您可以从
machineA
运行任何命令,而无需手动键入任何密码。
sshdavid@machineB主机名

获取
dir1


dir1=$(ssh)david@machineB查找$DIR-type d | sort | tail-1)

您可以将
machineA
的公钥复制到
david@machineB
david@machineC
搜索
ssh-keygen
ssh-copy-id

设置密钥后,您可以从
machineA
运行任何命令,而无需手动键入任何密码。
sshdavid@machineB主机名

获取
dir1

dir1=$(ssh)david@machineB查找$DIR-typed | sort | tail-1)

您可以使用ssh

命令为ssh-p port_numuser@host

port_num是端口号,默认为22。 用户是用户名 主机是ip或主机名,您可以使用ssh

命令为ssh-p port_numuser@host

port_num是端口号,默认为22。 用户是用户名
host是ip或主机名

很有趣,你的句柄是
SSH
,因为
SSH
正是你需要使用的命令…@Floris.lol…。我刚才还注意到..很有趣,你的句柄是
SSH
,因为
SSH
正是你需要使用的命令…@Florisced刚才说的…谢谢你的建议。我不能理解清楚,你能提供一个清楚的例子吗?谢谢你的帮助。更新了答案并做了一些解释。谢谢你的建议。我不能理解清楚,你能提供一个清楚的例子吗?谢谢你的帮助。更新了答案并做了一些解释。@rulfeng:谢谢,但h我如何在实际的shell脚本中插入它。假设我已经在machineB和machineC中设置了正确的键。我更新了我的答案,只需将
machineB
替换为
machineC
,您将获得
dir2
@rulfeng的值。谢谢,但是我如何在实际的shell脚本中插入它。假设我已经在machineB和machineC。我更新了我的答案,只需将
machineB
替换为
machineC
,您将获得
dir2
的值