我有一个脚本,它根据用户输入查询远程服务器并查找文件的最后修改日期。它可以工作,但是文件中包含一个字符串,我也需要显示该字符串,而我尝试的所有方法都无济于事。我非常感谢任何帮助。
脚本
echo "Input server name:"
read server
echo "Input user:"
read user
ssh $server "find /home/ -maxdepth 2 -name .lastlogin | xargs -l -I{} bash -c '{
stat -c \"User: %U Last Login : %y\" {} | cut -c -47 |grep $user;
}'"
当前样本输出
User: owner Last Login : 2014-07-24 15:05:39
我需要这个输出包含这个文件的内容,.lastlogin
它恰好是一个 IP 地址。
所需样本输出
User: owner Last Login : 2014-07-24 15:05:39 From: 172.0.0.1
答案1
最终完成了这件事,效果非常好。
echo "Server name:"
read server
echo "Search for user:"
read user
OUTPUT1=$(ssh $server "find /home/$user/.lastlogin | xargs -l -I{} bash -c '{
stat -c \"User: %U Last Login : %y\" {} | cut -c -47;
}'")
OUTPUT2=$(ssh $server "cat /home/$user/.lastlogin")
echo "$OUTPUT1 From: $OUTPUT2"
exit
输出:
User: owner Last Login : 2014-07-24 15:05:39 From: 172.0.0.1
答案2
很简单的:
ssh $server "readlink -f /home/$user/.lastlogin | \
xargs -l -I{} bash -c '{
stat -c \"User: %U Last Login : %y\" {} | cut -c -47 | grep $user;
echo -n \"From: \" ; cat {} ; echo ;
}'"
我会用readlink -f
而不是find
。