Bash脚本连接到远程服务器,并拉动上次修改文件的时间

时间:2014-07-29 14:25:08

标签: linux bash shell

我希望创建一个bash脚本来查询远程服务器上次修改文件的每个实例的时间。每个主目录都有此文件的版本。

例如,ownerowner1的主目录中都有foo.txt的副本,位于可通过ssh访问的远程控制台上。

/home/owner/
-rw-r--r--  1 owner owner   3368 Jul  29  2014 foo.txt

/home/owner1/
-rw-r--r--  1 owner1 owner1   3368 Jul  28  2014 foo.txt

我想将此信息输出到一个看起来像这样的文件:

User: owner  Last Modified: Jul 29 2014
User: owner1  Last Modified: Jul 28 2014

4 个答案:

答案 0 :(得分:2)

你真的应该至少表明你试图自己编写脚本。无论如何,它只是一个单行,所以为什么要狡辩:

ssh remote-box 'ls -l /home/*/foo.txt'

这不完全是您建议的格式,但它包含您要求的所有信息。

答案 1 :(得分:0)

以下功能将打印您要查找的数据:

remote_mod() {
  ssh $1 ls -l $2 | awk '{ print "User: "$3"  Last Modified: "$6" "$7" "$8 }'
}

这打印如下:

$ remote_mod yourmachine '~/.bashrc'
User: root  Last Modified: Jun 2 15:01

如果要对多个远程文件运行命令,则可以循环执行此操作:

for d in owner owner1
do
  remote_mod yourmachine /home/$d/foo.txt
done

stat命令会为您提供更多信息,但格式更详细。

答案 2 :(得分:0)

在这里,您可能不完全是您想要的输出,但我确信您可以修改脚本以满足您的需求。确保您使用ssh的用户具有对主目录的读访问权。

ssh HOSTNAME "find /home/  -maxdepth 2 -name foo.txt | xargs -l -I{} bash -c '{
DIR=\$(dirname {});
LAST=\$(stat -c %y {});
echo "Dir:\${DIR} Last Modified :\${LAST}" 
}'"

如果文件的所有者是"用户"你想要打印,你可以简化:

ssh HOSTNAME "find /home/  -maxdepth 2 -name foo.txt | xargs -l -I{} bash -c '{
stat -c \"User: %U Last Modified : %y\" {}; 
}'"

答案 3 :(得分:0)

echo owner: `ssh owner@remote-box "date -r foo.txt"`>output.txt
echo owner1: `ssh owner1@remote-box "date -r foo.txt"`>>output.txt