跳转至

47. 脚本:获取所有文件名

7.3 获取当前目录及子目录所有文件名脚本

yum install tree -y
#!/bin/bash
for file in `ls /opt`
do
    echo $file
done

脚本

vim for_list_file.sh

#!/bin/bash
function list_file(){
    for file in `ls $1`
    do
        dir_or_file=$1"/"$file
        if [ -d "$dir_or_file" ];then
            list_file $dir_or_file
        else
            echo $dir_or_file
        fi
    done
}

list_file $1

7.4 批量重命名脚本

#rename命令的用法
rename all ALL allfile.txt

rename批量修改文件名

vim for_rename.sh
#!/bin/bash
cd /tmp/my_shell/
for file in `ls . |grep -E "*.txt"`
do
    rename "txt" "log" $file
done

sed批量修改文件名

vim for_sed.sh
#!/bin/bash
cd /tmp/my_shell/
for file in `ls *.txt`
do
    mv $file `echo $file |sed 's/666/888/g'`
done

更简单的操作

rename "888" "" /tmp/my_shell/*.txt

7.5 99乘法表

vim for_99table.sh
#!/bin/bash
for ((a=1;a<=9;a++))
do
    for ((b=1;b<=9;b++))
    do
        if [[ a -ge b ]];then
            echo -n -e "$b * $a = $[a*b]\t"
        fi
    done
    echo ""
done

7.6 mysql分库备份脚本

忘记mysql数据库密码怎么办?

#1.修改配置文件
vim /etc/my.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock

#2.重启mariadb
systemctl restart mariadb

#3.登录mysql

#4.修改密码
update mysql.user set authentication_string=password('cpu123456') where user='root' and host='localhost';
flush privileges;

mysql快捷使用命令

mysql -uroot -p123456 -e "show databases;"|sed "1d"

脚本

vim mysql_table_bak.sh

#!/bin/bash
MYUSER=root
MYPWD=123456
DBPATH=/mysql_db_backup/
MYCMD="mysql -u$MYUSER -p$MYPWD"
MYDUMP="mysqldump -u$MYUSER -p$MYPWD"

[ ! -d "$DBPATH" ] && mkdir $DBPATH

for dbname in `$MYCMD -e "show databases;"|sed '1d'|egrep -v "mysql|schema"`
do
    mkdir ${DBPATH}/${dbname}_$(date +%F) -p
    for table in `$MYCMD -e "show tables from $dbname;"|sed '1d'`
    do  
        $MYDUMP $dbname $table |gzip > $DBPATH/${dbname}_$(date +%F)/${dbname}_${table}.sql.gz
    done
done

7.7 面试题:批量创建系统账号密码

随机数

echo $RANDOM   #0~32767

md5加密

echo "$RANDOM"|md5sum |cut -c3-11
echo "chupeng"|md5sum

脚本

vim for_user_pwd.sh

#!/bin/bash
lsb_functions="/lib/lsb/init-functions"
if test -f $lsb_functions ; then
  . $lsb_functions
else
  log_success_msg()
  {
    echo " SUCCESS! $@"
  }
  log_failure_msg()
  {
    echo " ERROR! $@"
  }
fi

user="chupeng"
pwdfile="/tmp/my_pwd.file"

for num in `seq -w 10`
do
    pwd="`echo $RANDOM|md5sum|cut -c3-11`"
    useradd $user$num &>/dev/null && echo -e "$user$num:$pwd">>$pwdfile
    if [ $? -eq 0 ];then
        log_success_msg "$user$num is success create."
    else
        log_failure_msg "$user$num is not create."
    fi
done

#批量设置密码
chpasswd < $pwdfile

#查看一次密码后清空密码文件
cat $pwdfile && > $pwdfile

7.8 md5文件内容校验

#1.生成校验文件的md5值
md5sum /etc/passwd > /tmp/pwd.md5

#查看md5值
cat /tmp/pwd.md5

#2.md5校验
md5sum -c /tmp/pwd.md5

#3.新建用户
useradd chupeng11

#4.重新md5校验
md5sum -c /tmp/pwd.md5

给md5sum加盐(chupeng)

for((i=1;i<=10;i++));do echo "chupeng$RANDOM"|md5sum|cut -c 3-11;done

通过系统自带的uuid获取唯一随机数

cat /proc/sys/kernel/random/uuid

破解md5sum

#1.生成所有随机数及其md5sum校验值,写入文件
vim create_random_md5sum.sh

#!/bin/bash
for num in {0..32767}
do
    echo "`echo $num|md5sum` $num" >>/tmp/my_random_md5sum.db
done

开发检索脚本

vim find_md5sum.sh

#!/bin/bash
#查找“4fe8bf20ed”出处
md5char="4fe8bf20ed"
while read line
do
    if [ `echo $line|grep $md5char|wc -l` -eq 1 ];then
        echo "congratulations,you find it : $line"
        break
    fi
done</tmp/my_random_md5sum.db

最后更新: 2022-02-19 13:59:07