Linux_Bash常用脚本

举报
云物互联 发表于 2021/08/05 23:49:29 2021/08/05
【摘要】 目录 目录从用户列表中过滤用户名并创建用户awktrcut 指令的文本处理 tr指令cut指令awk指令 备份文件测试LFTPServer权限设定开启Httpd安装Httpd批量创建用户批量删除用户 从用户列表中过滤用户名并创建用户 ######################### name.sh #!/bin/bash n=0 use...

目录

从用户列表中过滤用户名并创建用户

######################### name.sh  
#!/bin/bash
n=0
userName=`echo $(cat /root/name.txt | tr -s " " | cut -d " " -f2 )`
for userN in $userName
do let ++n dirName=`echo $(cat /root/name.txt | awk -F " " '{print $1}')| cut -d " " -f$n` useradd -d /home/$dirName $userN echo 123456 | passwd --stdin $userN
done
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

awk、tr、cut 指令的文本处理

awk、tr、cut 指令可以很好的进行文本信息处理

tr指令

一般用于文本或字符串编辑处理,可以替换、删除、合并重复字符。

tr -s "Str" textString #将testString中的重复的"Str"合并为一个
#如:
tr -s " " 将标准输入的Text中的连续的" " 合并重一个空格符
  
 
  • 1
  • 2
  • 3

cut指令

以分割的方式来编辑文本

cut -d " " -f2 -d 定义分隔符,将标准输入的文本信息以" "作为分隔符 -f-d配合指定分割后要显示的区域 -c numberRange <==>(2-5) 将Text中的2-5范围的字符截取出来
  
 
  • 1
  • 2
  • 3
  • 4

awk指令

awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
工作原理:读入并分割有’\n’换行符的的一条记录,再将这条记录以-F " "指定的特定分割符来划分出域,填充域,最后使用$Number 来选择需要显示第几个域并最终使用{print $Number}显示。没有-F指定特定分隔符时,默认分隔符为”空白键” 或 “[tab]键”。

备份文件

#############################Backups.sh  
#!/bin/bash
read -p "请输入要备份的内容:" backupName
read -p "请输入要备份的文件名及路径:" backupUrl
read -p "请输入要备份的文件的存放路径:" backupCpUrl
read -p "请输入要使用的压缩算法:" backupAlg
alg=0
algName=0
case $backupAlg in
gzip) alg=z algName=gz ;;
bzip2) alg=j algName=bz2 ;;
xz) alg=J algName=xz ;;
*) echo "请输入正确的压缩算法类型!"
esac

tar ${alg}cvf ${backupCpUrl}/${backupName}.tar.${algName} ${backupUrl}
if [ $? -eq 0 ] then echo "打包备份文件成功!"
else echo "打包备份失败!"
fi
########################################## SCRIPT END 
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

测试LFTPServer权限设定

########################################## Lftp.sh 
#!/bin/bash
lftp 192.168.8.248 -u user1,fanguiju -e "cd share;ls;exit" &> /dev/null
if [ $? -eq 0 ] then echo "user1用户可以读取share目录,符合要求!"
else echo "user1用户不可以读取share目录,不符合要求!"
fi
lftp 192.168.8.248 -u user1,fanguiju -e "cd share;mkdir testSaDir_user1;exit" &> /dev/null
if [ $? -eq 1 ] then echo "user1用户不可以写入share目录,符合要求!"
else echo "user1用户可以写入share目录,不符合要求!"
fi
lftp 192.168.8.248 -u user1,fanguiju -e "cd data;ls;exit" &> /dev/null
if [ $? -eq 0 ] then echo "user1用户可以读取data目录,符合要求!"
else echo "user1用户不可以读取data目录,不符合要求!"
fi
lftp 192.168.8.248 -u user1,fanguiju -e "cd data;mkdir testDaDir_user1;exit" &> /dev/null
if [ $? -eq 0 ] then echo "user1用户可以写入data目录,符合要求!"
else echo "user1用户可以不写入data目录,不符合要求!"
fi

lftp 192.168.8.248 -u user2,fanguiju -e "cd share;ls;exit" &> /dev/null
if [ $? -eq 0 ] then echo "user2用户可以读取share目录,符合要求!"
else echo "user2用户不可以读取share目录,不符合要求!"
fi
lftp 192.168.8.248 -u user2,fanguiju -e "cd share;mkdir testSaDir_user2;exit" &> /dev/null
if [ $? -eq 1 ] then echo "user2用户不可以写入share目录,符合要求!"
else echo "user2用户可以写入share目录,不符合要求!"
fi
lftp 192.168.8.248 -u user2,fanguiju -e "cd data;ls;exit" &> /dev/null
if [ $? -eq 0 ] then echo "user2用户可以读取data目录,符合要求!"
else echo "user2用户不可以读取data目录,不符合要求!"
fi
lftp 192.168.8.248 -u user2,fanguiju -e "cd data;mkdir testDaDir_user2;exit" &> /dev/null
if [ $? -eq 1 ] then echo "user1用户不可以写入data目录,符合要求!"
else echo "user1用户可以写入data目录,不符合要求!"
fi
#FTP(File Transfer Protocol) lftp FTPServerIP -u userName,Password -e "command1;command2;exit" &> /dev/null 是编写LFTP服务脚本的方法
##################################################  SCRIPT END
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

开启Httpd

################################################## HttpStatus.sh  
#!/bin/bash
while true
do netstat -lputn | grep :80 &> /dev/null if [ $? -eq 0 ] then echo "httpd running!" exit else echo "httpd stop" echo "正在尝试重启httpd服务..." echo `date +"%Y-%m-%d %H:%M:%S"` >> /var/log/mylog tail -n 1 /etc/httpd/logs/error_log >> /var/log/mylog service httpd start fi netstat -lputn | grep :80 &> /dev/null if [ $? -eq 0 ] then echo "httpd 重启启动成功!" break fi
done
exit 0
################################################## SCRIPT END
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

安装Httpd

################################################## InstallHttp.sh  
#!/bin/bash
rpm -q httpd
if [ $? -eq 0 ] then echo "httpd已经安装!" exit 0 else echo -n "正在安装httpd..."
fi
yum install -y httpd &> /dev/null
rpm -q httpd
if [ $? -eq 0 ] then echo "安装成功!"
else echo -n "安装失败!" >> /var/log/mylog date >> /var/log/mylog
fi
################################################# SCRIPT END
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

批量创建用户

################################################# UserAdd.sh  
#!/bin/bash
while true
do
read -p "请输入要添加的用户数目(100以内):" userNum
if [ $userNum -le 0 ] || [ $userNum -ge 100 ] then echo "请输入正确的数目范围!"
else break
fi
done
read -p "请输入用户名前缀:" userName
read -p "请输入用户帐号的失效时间(MM/DD/YY):" userTime
read -p "请输入用户的初始密码:" userPwd
num=0
for (( num=0;num<=$userNum;num++ ))
do
if [ $num -lt 10 ] then name=${userName}0${num} else name=${userName}$num
fi
useradd -e $userTime $name
echo $userPwd | passwd --stdin $name
done
echo "你成功创建了${userNum}个用户!"
########################################### SCRIPT END
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

批量删除用户

###########################################  UserDel.sh   
#!/bin/bash
if [ $# -ne 1 ] then echo "语法错误!" echo "用法:$0 用户名前缀"
fi
num=`echo $(cat /etc/passwd | grep -v ^root$ | cut -d ":" -f1 | grep -v ^root$ | grep $1 )`
if [ -z $num ] then echo "没有以$1为前缀的用户" else for userName in $num do echo -n "正在删除用户$userName..." userdel -r $userName echo "完成" done
fi
# $# 脚本后接参数的个数 $# -ne 1 脚本后参数的个数!=1
############################################ SCRIPT END
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

文章来源: is-cloud.blog.csdn.net,作者:范桂飓,版权归原作者所有,如需转载,请联系作者。

原文链接:is-cloud.blog.csdn.net/article/details/50407911

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。