栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

shell远程查询脚本——shell远程主机ssh判断目标文件其是否存在后查询其是否存在目标字段(和遇到的问题)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shell远程查询脚本——shell远程主机ssh判断目标文件其是否存在后查询其是否存在目标字段(和遇到的问题)

1.第一版wuhu.sh

text(为文本文件)

for a in 111
do
ssh 172.16.4.$a "if [ -f /xxx/xxx/text ];
then
echo '172.16.4.$a有这个,容我我康康里边有没有这段吼'
more xxx/xxx/text|grep 'xxxxx-xxxxxxxx xxxx'
if [ $? -eq 0];
then
echo '$a里边有'
else
echo '没找到,我给你加一下'
echo 'xxxxx-xxxxxxxx xxxx' >> xxx/xxx/text
more xxx/xxx/text|grep 'xxxxx-xxxxxxxx xxxx'
if [ $? -eq 0];
then
echo 加上了
else
echo 没加上,废了
fi
fi
else
echo '172.16.4.$a我寻思这也没有啊,我先给你搞一哈'
touch xxx/xxx/text
echo 'xxxxx-xxxxxxxx xxxx' >> xxx/xxx/text
if [ $? -eq 0];
then
echo 整好了
else
echo 整废了
fi
fi"
done

思路:

方便批量执行这里用的for给a个値

ssh 远程主机 if -f 加绝对路径判断是否存在此文件;
如果存在

则先more目标文件|grep查找一下这段话(这里是错误的,使用了more有雷,在执行时候会卡在more这里不往下走,crtl+c中断后提示Killed by signal 2)

而后if判断上面命令输出的值是否等于true

如果有就结束

如果没有则echo '内容'>>目标文件 加上然后结束

如果不存在

则touch一个然后echo '内容'>>目标文件 加上

然后if $? -eq是否等于true 看下执行是否成功

成了就结束

不成也结束

-----------------------------------------------------------------------------

而后替换为cat再次尝试

cat /xxx/xxx/text|grep 'xxx' 1>/dev/null

发现可以往下走了

且执行成功

然后开始尝试输入复杂字符测试一下 

cat /xxx/xxx/text|grep 'xxx aaaa \aaa - a' 1>/dev/null

提示

然后到目标文件中验证是否真的存在

发现目标文件存在 但是文件中并没有目标语句

然后把目标文件删了又执行一次

后到新生成的目标文件中发现写入语句成功

感觉问题出在 判断文件存在→查询语句是否存在 这个过程中

于是把文件内容删除再次执行

果不其然 

于是有点迷惑了,目前来看问题只能出在 $?判定为true

cat /xxx/xxx/text|grep 'xxx aaaa \aaa - a' 1>/dev/null

因脚本中存在存在两段cat+grep 第一段目前判定为true的原因不明,于是测试第二段有无线索

即判定为没有文件后生成文件并写入,再cat+grep

测试方法为 将针对文件的if -f 改为针对所有存在的if -e ,并将touch改为mkdir 往文件夹里echo>肯定是会报错的, 写入失败是否会返回

仍然判定写入成功,可以确定是grep的问题了 

未完待续...2022年4月20日

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/828191.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号