目录

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

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

Linux_Bash常用脚本的更多相关文章

  1. MS SQL 日常维护管理常用脚本(二)

    监控数据库运行 下面是整理.收集监控数据库运行的一些常用脚本,也是MS SQL 日常维护管理常用脚本(一)的续集,欢迎大家补充.提意见. 查看数据库登录名信息   Code Snippet SELEC ...

  2. Inno Setup的常用脚本

    Inno Setup的常用脚本 分类: VC++神奇理论 2012-12-06 10:07 3234人阅读 评论(2) 收藏 举报 安装不同的目录: [Files] Source: "我的程 ...

  3. 常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript

    常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript Javascript现阶段还不适合用来做独立开发,它的天下还是在web应用 ...

  4. shell常用脚本

    shell常用脚本 author:headsen chen  2017-10-17 15:36:17 个人原创,转载请注明,否则依法追究法律责任 1,vim  name.grep.sh 2,cat   ...

  5. Google常用脚本

    1.Tampermonkey 可下载常用脚本:https://greasyfork.org/zh-CN 2.常用FQSetupVPN 3.百度药丸屏蔽广告 4.百度文档可粘贴,下载 5.VIP视频可看

  6. 游戏编程之Unity常用脚本类的继承关系

    前言学习Unity开发引擎的初学者会接触大量的脚本类,而这些类之间的关系往往容易被忽略.本文对Unity引擎开发中的一些常用类及其关系进行了简单的归纳总结. 博文首发地址:http://tieba.b ...

  7. Linux 常用脚本

    Linux 常用脚本   修改表列属性   sql可任意修改,若数据库正好在执行机器上,可去掉ip地址 echo 为输出   #!/bin/shfor((i=0;i<256;i++));do   ...

  8. oracle 常用脚本以及语句

    oracle 常用脚本以及语句 一.oracle 安装10G 单机初始化环境: #!/bin/bash #关闭selinuxsed -i 's\SELINUX=enforcing\SELINUX=di ...

  9. PowerDesigner 设计数据库中常用脚本

    PowerDesigner 设计数据库中常用脚本 数据库设计 物理模型设置 Name转Comment脚本 '********************************************** ...

随机推荐

  1. js中return、return false 、return true各自代表什么含义

    return语句代表需要返回一个值,如果不需要就不需要使用return语句.都类似一个出口,return 可以结束方法体中 return后面部分代码的执行.return false 或者 return ...

  2. Vue.js——60分钟组件快速入门(上篇)二

    来源:https://www.cnblogs.com/keepfool/p/5625583.html 组件简介 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小 ...

  3. [转]Oracle 11g 基于CentOS7静默安装教程(无图形界面,远程安装) --有部份地方有问题

    Oracle 11g 基于CentOS7静默安装教程(无图形界面,远程安装) [转载]原文地址:http://canonind.blog.51cto.com/8239025/1883066 一.安装前 ...

  4. springboot集成hibernate

    package com.jxd.Boot.hibernate.dao.impl; import java.util.List; import javax.persistence.EntityManag ...

  5. [MethodImpl(MethodImplOptions.Synchronized)]、lock(this)与lock(typeof(...))

    对于稍微有点经验的.NET开发人员来说,倘若被问及如何保持线程同步,我想很多人都能说好好几种.在众多的线程同步的可选方式中,加锁无疑是最为常用的.如果仅仅是基于方法级别的线程同步,使用System.R ...

  6. Multisim

    万用表 测量电压.电流.电阻 直流.交流 函数发生器XFG 正极.负极.公共端 可以产生正弦波.三角波和矩形波,可以设置信号参数:频率.占空比.幅度和偏移量等 示波器XSC 双通道示波器 4个连接点, ...

  7. 【串线篇】spring boot配置嵌入式servlet容器

    SpringBoot默认使用Tomcat作为嵌入式的Servlet容器 问题? 一.如何定制和修改Servlet容器的相关配置 1.方法1修改和server有关的配置(ServerProperties ...

  8. php注解

    官方全部注解:https://docs.phpdoc.org/references/phpdoc/tags/index.html 1.@var 您可以使用@var标记来记录属性的“类型”,有时也称为类 ...

  9. 前端每日实战:93# 视频演示如何用纯 CSS 创作一根闪电连接线

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/RBjdzZ 可交互视频 此视频是可 ...

  10. 22.Express框架——2019年12月19日

    2019年12月19日14:16:36 1. express简介 1.1 介绍 Express框架是后台的Node框架,所以和jQuery.zepto.yui.bootstrap都不一个东西. Exp ...