Linux_Bash常用脚本

简介: 目录目录从用户列表中过滤用户名并创建用户awktrcut 指令的文本处理tr指令cut指令awk指令备份文件测试LFTPServer权限设定开启Httpd安装Httpd批量创建用户批量删除用户从用户列表中过滤用户名并创建用户######################### name.

目录

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

######################### 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

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

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

tr指令

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

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

cut指令

以分割的方式来编辑文本

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

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 

测试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

开启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

安装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

批量创建用户

################################################# 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

批量删除用户

###########################################  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
相关文章
|
3月前
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
205 6
|
4月前
|
Linux
在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
|
1月前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
63 1
|
2月前
|
Devops 关系型数据库 大数据
1000个开源免费的bash脚本合集
【10月更文挑战第4天】
|
3月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
3月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
733 2
|
2月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
36 0
|
3月前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。