Linux 脚本 主要是用来批量替换 IP 数据库密码

Linux 脚本 主要是用来批量替换 IP 数据库密码


注意事项 特殊符号千万别用在这个脚本 比如 * 星号  \ / 有些是注释 把注释符号替换掉就会出问题


如果一定要这么用 请自己先备份好尝试


使用方式 Replacement.sh 路劲 替换前 替换后 比如元文件里有个IP 是123.123.123.123


把脚本放到系统根目录


./
Replacement.sh[有空格]/data
[有空格]
123.123.123.123
[有空格]
222.222.222.222


cd / && ./
Replacement.sh /data
123.123.123.123 222.222.222.222


图片[1]-Linux 脚本 主要是用来批量替换 IP 数据库密码-七玩网 Replacement.zip (1.47 KB, 下载次数: 47) 2022-11-15 17:19 上传 点击文件名下载附件

  1. #!/bin/bash
  2. #替换的文件夹目录 会自动查询子目录
  3. name_dir=”$1″
  4. #替换前
  5. B=”$2″
  6. #替换后
  7. A=”$3″
  8. finddir=”/tmp/i8520-98w7e9wqe_find-0806″
  9. rm -rf $finddir
  10. mkdir -p $finddir
  11. #为了得到带空格的文件路径 “” 加了双引号 保存到 finddirA.txt 文件 ,简单说列出所以文件路径保存到finddirA.txt
  12. #-name “*” 表示 路径下的所有文件
  13. find $name_dir -type f -name “*” | awk ‘{print “””$0}’ | awk ‘{print $0″””}’ > $finddir/finddirA.txt
  14. if [ ! -s “$finddir/finddirA.txt” ];then
  15. echo -e “创建路径文件失败,请确认路径是否存在!!!”
  16. else
  17. echo -e “创建路径文件成功”
  18. fi
  19. sleep 1
  20. #把预设转换代码加到 文件路径前面 并保存 到 finddirA.sh 脚本 。简单说finddirA.txt转换成具体功能脚本finddirA.sh
  21. awk ‘{print “sed -i -r “s/$A/$B/g” “$0}’  $finddir/finddirA.txt >$finddir/finddirA.sh
  22. chmod -R 750 $finddir/finddirA.sh
  23. #替换字符得到完美的执行脚本 这里不要改
  24. sed -i “s/\$A/$B/g” $finddir/finddirA.sh
  25. sed -i “s/\$B/$A/g” $finddir/finddirA.sh
  26. if [ ! -s “$finddir/finddirA.sh” ];then
  27. echo -e “创建替换脚本失败”
  28. else
  29. echo -e “创建替换脚本成功”
  30. fi
  31. sleep 1
  32. MYlist=”${finddir}/grep_list.txt”
  33. grep -rEn “${B}” “${name_dir}”  | grep -v “Binary file” > ${MYlist}
  34. #读取匹配文件有几行。几行就是几个
  35. list_123=$(cat ${MYlist} | wc -l)
  36. #—————————————————————-
  37. #不知到为什么会卡在这里所以判断一下直接推出
  38. abcdfe=”=========================================”
  39. list_BUG=”0″
  40.   if [ ! x${list_BUG} = x${list_123} ];then
  41.     echo “${abcdfe}”
  42.     else
  43.        listBUG=$(cat $finddir/finddirA.txt | wc -l)
  44.        echo -e “${abcdfe}\n替换失败!一共查询 ${listBUG} 个文件 替换前${B}不存在 脚本已经终止运行!”;exit
  45.   fi
  46. #—————————————————————-
  47. #获取匹配文件第一行 作为文件路径使用 来获取文件MD5
  48. list_abc=$(sed -n 1p ${MYlist})
  49. #${list_abc%%:*} 截取字符获得文件路径
  50. md5sum ${list_abc%%:*} > $finddir/md5sum_a.txt
  51. mymd5sum=`sed -n 1p $finddir/md5sum_a.txt`
  52. #执行替换脚本
  53. echo “正在执行替换脚本请稍候……”
  54. cd $finddir && ./finddirA.sh
  55. if [ ! $? == 0 ];then
  56.     echo -e “\n执行替换脚本失败 !!!替换前字符 ${B} 不符合 sed 规范\
  57.     请查看 sed -h 帮助\n其他帮助:https://www.cnblogs.com/f-ck-need-u/p/7499309.html”
  58. else
  59.     #验证前后MD5直判断是否替换成功 这里只验证一个文件,应为只要 sed 输入符合规范 finddirA.sh脚本都会执行
  60.     find_p=`find $name_dir -type f -name “*” | awk ‘{print “””$0}’ | awk ‘{print $0″””}’ | wc -l`
  61.     mymd5sum_x=`md5sum ${list_abc%%:*} | sed -n 1p`
  62.     if [ ! x${mymd5sum:0:32} = x${mymd5sum_x:0:32}  ] ;then
  63.     echo “替换成功!一共查询 ${find_p} 个文件。匹配到 ${list_123} 个文件”
  64.        else
  65.        echo “ERR”
  66.     fi
  67. fi
  68. sleep 1

复制代码

© 版权声明
THE END
文章不错?点个赞呗
点赞0分享
评论 抢沙发

请登录后发表评论

    暂无评论内容