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
的值