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日



