跨服务器/用户收集 Cron Tab 条目
Posted
技术标签:
【中文标题】跨服务器/用户收集 Cron Tab 条目【英文标题】:Collecting Cron Tab entries across servers/users 【发布时间】:2015-06-15 03:29:26 【问题描述】:为此苦苦挣扎了几天。正在尝试创建以空格分隔的 $host $useraccount $crontab 条目列表。
我尝试了几种不同的方法。每个结局都以不同程度的灾难告终,我最接近的是这个,有人指出我缺少的明显的东西。
#!/usr/bin/bash
#Global Crontab Inventory for Scripts
#
outputfile="/localpath/cronoutput.txt"
LPARLIST=/pathto/LPAR.txt
while read LPAR;
do
ping -c 1 $LPAR > /dev/null
if [ $? -eq 0 ]; then
for user in $(ssh -n $LPAR /opt/freeware/bin/ls /var/spool/cron/crontabs);
do
while read line;
do
echo "$LPAR $user $line"
done <"$(ssh -n "$LPAR" /opt/freeware/bin/tail -n +29 /var/spool/cron/crontabs/$user)"
done
fi
done <$LPARLIST
它似乎在抱怨试图将尾部的输出作为命令执行。
./crons.sh:第 11 行:(几页裁剪的 cron 条目):文件名太长
./crons.sh: line 11: : 没有这样的文件或目录
./crons.sh:第 11 行:#
【问题讨论】:
【参考方案1】:这对我有用。
#!/bin/bash
#Global Crontab Inventory for Scripts
#
outputfile="/localpath/cronoutput.txt"
LPARLIST=LPAR.txt
cat $LPARLIST |
while read LPAR;
do
ping -c 1 $LPAR > /dev/null
if [ $? -eq 0 ]; then
for user in $(ssh -n root@$LPAR ls /var/spool/cron/crontabs);
do
ssh -n "root@$LPAR" tail -n +29 /var/spool/cron/crontabs/$user |
while read line;
do
echo "$LPAR $user $line"
done
done
fi
done
我更喜欢cat xxx | while ...
,而不是像你那样重定向输入。理论上应该是一样的。我没有发现任何特别的错误,也没有真正改变任何东西——只是重新排列了你所拥有的。
cat xxx | while ...
技术的优点是您可以在 cat 和 while 之间插入命令。在这种情况下,我不会使用 tail -n +29 ,因为您猜测前 29 行是垃圾,但这可能不是真的。相反,我只会对文件进行 cat 处理,然后 egrep 以散列 #
开头的行。再次,....是的,猫是多余的,但谁真正在乎。添加和删除东西更通用,更容易。
我没有安装/opt
软件包,除非绝对必要,否则我不会依赖它们。您正在增加依赖性。所以我只使用了本地的“ls”和“tail”。我还添加了一个明确的root@
,但您不需要它。它只是简化了我的测试。
也许 ls 溢出了。试试这个:
#!/bin/bash
#Global Crontab Inventory for Scripts
#
outputfile="/localpath/cronoutput.txt"
LPARLIST=LPAR.txt
cat $LPARLIST |
while read LPAR;
do
ping -c 1 $LPAR > /dev/null
if [ $? -eq 0 ]; then
ssh -n root@$LPAR ls /var/spool/cron/crontabs |
while read user
do
ssh -n "root@$LPAR" tail -n +29 /var/spool/cron/crontabs/$user |
while read line;
do
echo "$LPAR $user $line"
done
done
fi
done
希望这会有所帮助...
【讨论】:
同样的错误,它似乎试图将整行作为命令执行,它似乎永远不会使用 echo 命令进入 while 循环。不过,我确实喜欢猫。另外我知道前 29 行是垃圾,因为这些都是由同一个 nim/mksysb 构建的 aix 映像。所以它们都是相同的。我想要注释掉的脚本,因为我也在尝试获取可能准备好退休并且安装腐烂留下的清单。以上是关于跨服务器/用户收集 Cron Tab 条目的主要内容,如果未能解决你的问题,请参考以下文章