我希望创建一个bash脚本来查询远程服务器上次修改文件的每个实例的时间。每个主目录都有此文件的版本。
例如,owner
和owner1
的主目录中都有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
答案 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