找回密码
 立即注册
查看: 105|回复: 0

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

[复制链接]

1023

主题

0

回帖

1023

积分

金牌会员

积分
1023
发表于 昨天 10:21 | 显示全部楼层 |阅读模式
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
Replacement.zip (1.47 KB, 下载次数: 0)

  • #!/bin/bash
  • #替换的文件夹目录 会自动查询子目录
  • name_dir="$1"
  • #替换前
  • B="$2"
  • #替换后
  • A="$3"
  • finddir="/tmp/i8520-98w7e9wqe_find-0806"
  • rm -rf $finddir
  • mkdir -p $finddir
  • #为了得到带空格的文件路径 "" 加了双引号 保存到 finddirA.txt 文件 ,简单说列出所以文件路径保存到finddirA.txt
  • #-name "*" 表示 路径下的所有文件
  • find $name_dir -type f -name "*" | awk '{print """$0}' | awk '{print $0"""}' > $finddir/finddirA.txt
  • if [ ! -s "$finddir/finddirA.txt" ];then
  • echo -e "创建路径文件失败,请确认路径是否存在!!!"
  • else
  • echo -e "创建路径文件成功"
  • fi
  • sleep 1
  • #把预设转换代码加到 文件路径前面 并保存 到 finddirA.sh 脚本 。简单说finddirA.txt转换成具体功能脚本finddirA.sh
  • awk '{print "sed -i -r "s/$A/$B/g" "$0}'  $finddir/finddirA.txt >$finddir/finddirA.sh
  • chmod -R 750 $finddir/finddirA.sh
  • #替换字符得到完美的执行脚本 这里不要改
  • sed -i "s/\$A/$B/g" $finddir/finddirA.sh
  • sed -i "s/\$B/$A/g" $finddir/finddirA.sh
  • if [ ! -s "$finddir/finddirA.sh" ];then
  • echo -e "创建替换脚本失败"
  • else
  • echo -e "创建替换脚本成功"
  • fi
  • sleep 1
  • MYlist="${finddir}/grep_list.txt"
  • grep -rEn "${B}" "${name_dir}"  | grep -v "Binary file" > ${MYlist}
  • #读取匹配文件有几行。几行就是几个
  • list_123=$(cat ${MYlist} | wc -l)
  • #----------------------------------------------------------------
  • #不知到为什么会卡在这里所以判断一下直接推出
  • abcdfe="========================================="
  • list_BUG="0"
  •   if [ ! x${list_BUG} = x${list_123} ];then
  •     echo "${abcdfe}"
  •     else
  •        listBUG=$(cat $finddir/finddirA.txt | wc -l)
  •        echo -e "${abcdfe}\n替换失败!一共查询 ${listBUG} 个文件 替换前${B}不存在 脚本已经终止运行!";exit
  •   fi
  • #----------------------------------------------------------------
  • #获取匹配文件第一行 作为文件路径使用 来获取文件MD5
  • list_abc=$(sed -n 1p ${MYlist})
  • #${list_abc%%:*} 截取字符获得文件路径
  • md5sum ${list_abc%%:*} > $finddir/md5sum_a.txt
  • mymd5sum=`sed -n 1p $finddir/md5sum_a.txt`
  • #执行替换脚本
  • echo "正在执行替换脚本请稍候......"
  • cd $finddir && ./finddirA.sh
  • if [ ! $? == 0 ];then
  •     echo -e "\n执行替换脚本失败 !!!替换前字符 ${B} 不符合 sed 规范\
  •     请查看 sed -h 帮助\n其他帮助:https://www.cnblogs.com/f-ck-need-u/p/7499309.html"
  • else
  •     #验证前后MD5直判断是否替换成功 这里只验证一个文件,应为只要 sed 输入符合规范 finddirA.sh脚本都会执行
  •     find_p=`find $name_dir -type f -name "*" | awk '{print """$0}' | awk '{print $0"""}' | wc -l`
  •     mymd5sum_x=`md5sum ${list_abc%%:*} | sed -n 1p`
  •     if [ ! x${mymd5sum:0:32} = x${mymd5sum_x:0:32}  ] ;then
  •     echo "替换成功!一共查询 ${find_p} 个文件。匹配到 ${list_123} 个文件"
  •        else
  •        echo "ERR"
  •     fi
  • fi

  • sleep 1





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|白黑论坛 |网站地图

GMT+8, 2025-4-4 08:01 , Processed in 0.026732 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表