我有下面提到的三台机器-
machineA
machineB
machineC
machineb和machinec具有此目录-
/bat/data/snapshot_t1/
现在我需要从machinea运行下面的shell脚本,并在路径
/bat/data/snapshot_t1/
下找出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上也设置了密钥。 最佳答案
您可以将machineA
的公钥复制到david@machineB
和david@machineC
搜索ssh-keygen
和ssh-copy-id
设置密钥后,您可以从machineA
运行任何命令,而无需手动键入任何密码。ssh david@machineB hostname
得到dir1
。dir1=$(ssh david@machineB find $DIR -type d | sort | tail -1)
关于linux - 如何通过在machineA中运行shell脚本来执行命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20754641/