Linux shell脚本学习和实战之一

1、在/test目录下使用for循环创建10个文件如:test-1,test-2,...test-10
mkdirsh.sh
#!/bin/bash
for i in `seq 10`
do
[ ! -d /test ] && mkdir -p /test
touch /test/test-$i
done
chmod +x mkdirsh.sh

2、在/test目录下快速创建10个文件的方法如:test-1,test-2,...test-10
[[email protected] test]# touch test-{1..10}
[[email protected] test]# ll
total 0
-rw-r--r-- 1 root root 0 Mar 30 10:36 test-1
-rw-r--r-- 1 root root 0 Mar 30 10:36 test-10
-rw-r--r-- 1 root root 0 Mar 30 10:36 test-2
-rw-r--r-- 1 root root 0 Mar 30 10:36 test-3
-rw-r--r-- 1 root root 0 Mar 30 10:36 test-4
-rw-r--r-- 1 root root 0 Mar 30 10:36 test-5
-rw-r--r-- 1 root root 0 Mar 30 10:36 test-6
-rw-r--r-- 1 root root 0 Mar 30 10:36 test-7
-rw-r--r-- 1 root root 0 Mar 30 10:36 test-8
-rw-r--r-- 1 root root 0 Mar 30 10:36 test-9

3、将以上文件名的test改为bruce(用for循环)
renamesh.sh
#!/bin/bash
[ -d /test ] && cd /test
for file in `ls test*`
do
mv $file `echo $file | sed ‘s#test#bruce#g‘ `
done
chmod +x renamesh.sh

4、将以上文件名的bruce快速改为network

[[email protected] test]# rename test network *bruce*
[[email protected] test]# ll
total 0
-rw-r--r-- 1 root root 0 Mar 30 10:36 network-1
-rw-r--r-- 1 root root 0 Mar 30 10:36 network-10
-rw-r--r-- 1 root root 0 Mar 30 10:36 network-2
-rw-r--r-- 1 root root 0 Mar 30 10:36 network-3
-rw-r--r-- 1 root root 0 Mar 30 10:36 network-4
-rw-r--r-- 1 root root 0 Mar 30 10:36 network-5
-rw-r--r-- 1 root root 0 Mar 30 10:36 network-6
-rw-r--r-- 1 root root 0 Mar 30 10:36 network-7
-rw-r--r-- 1 root root 0 Mar 30 10:36 network-8
-rw-r--r-- 1 root root 0 Mar 30 10:36 network-9

5、批量创建10个系统帐号test01,test02,...test10并设置密码
(1)、首先理解序号数字的生成方法
[[email protected] test]# echo {01..10}
01 02 03 04 05 06 07 08 09 10
[[email protected] test]# seq 10
1
2
3
4
5
6
7
8
9
10
[[email protected] test]# seq -w 10
01
02
03
04
05
06
07
08
09
10

(2)、基于序号数字来依次生成用户帐户和密码信息
createusersh.sh
#!/bin/bash
for i in `seq -w 10`
do
useradd test$i && echo "test$i" | passwd --stdin test$i
done
chmod +x createusersh.sh
[[email protected] ~]# ./createusersh.sh
Changing password for user test01.
passwd: all authentication tokens updated successfully.
Changing password for user test02.
passwd: all authentication tokens updated successfully.
Changing password for user test03.
passwd: all authentication tokens updated successfully.
Changing password for user test04.
passwd: all authentication tokens updated successfully.
Changing password for user test05.
passwd: all authentication tokens updated successfully.
Changing password for user test06.
passwd: all authentication tokens updated successfully.
Changing password for user test07.
passwd: all authentication tokens updated successfully.
Changing password for user test08.
passwd: all authentication tokens updated successfully.
Changing password for user test09.
passwd: all authentication tokens updated successfully.
Changing password for user test10.
passwd: all authentication tokens updated successfully.
[[email protected] ~]# cat /etc/passwd | grep test*
test01:x:502:502::/home/test01:/bin/bash
test02:x:503:503::/home/test02:/bin/bash
test03:x:504:504::/home/test03:/bin/bash
test04:x:505:505::/home/test04:/bin/bash
test05:x:506:506::/home/test05:/bin/bash
test06:x:507:507::/home/test06:/bin/bash
test07:x:508:508::/home/test07:/bin/bash
test08:x:509:509::/home/test08:/bin/bash
test09:x:510:510::/home/test09:/bin/bash
test10:x:511:511::/home/test10:/bin/bash
说明:生成test01,test02,...test10用户成功!

6、批量删除用户
userdelsh.sh
#!/bin/bash
for username in `cat /etc/passwd| grep test*|awk -F: ‘{print $1}‘`
do
userdel -r $username
done
chmod +x userdelsh.sh
[[email protected] ~]# ./userdelsh.sh
[[email protected] ~]# cat /etc/passwd|grep test*
说明:删除test01,test02,...test10用户成功!

7、批量创建10个帐号bruce01,bruce02,...bruce10并设置随机密码
createusernew.sh
#!/bin/bash
for i in `seq -w 10`
do
passwd=`echo $RANDOM | md5sum | cut -c 1-8`
##注意:将随机数定义为变量后,在后续引用过程中其值保持不变!
useradd bruce$i && echo "$passwd" | passwd --stdin bruce$i
echo -e "user:bruce$i \t password:$passwd" >> /tmp/userandpw.log
done
chmod +x createusernew.sh

[[email protected] ~]# ./createusernew.sh
Changing password for user bruce01.
passwd: all authentication tokens updated successfully.
Changing password for user bruce02.
passwd: all authentication tokens updated successfully.
Changing password for user bruce03.
passwd: all authentication tokens updated successfully.
Changing password for user bruce04.
passwd: all authentication tokens updated successfully.
Changing password for user bruce05.
passwd: all authentication tokens updated successfully.
Changing password for user bruce06.
passwd: all authentication tokens updated successfully.
Changing password for user bruce07.
passwd: all authentication tokens updated successfully.
Changing password for user bruce08.
passwd: all authentication tokens updated successfully.
Changing password for user bruce09.
passwd: all authentication tokens updated successfully.
Changing password for user bruce10.
passwd: all authentication tokens updated successfully.
[[email protected] ~]# su - bruce01
[bruce01[email protected] ~]$ cat /tmp/userandpw.log
user:bruce01     password:277e5794
user:bruce02     password:e0ed3fdb
user:bruce03     password:1936a6d4
user:bruce04     password:dd10be6e
user:bruce05     password:842e552b
user:bruce06     password:ed8d2b54
user:bruce07     password:50da7bcf
user:bruce08     password:0463a374
user:bruce09     password:f29e9d10
user:bruce10     password:6e88cb6a
[[email protected] ~]$ su - bruce02
Password:
[[email protected] ~]$ exit
说明:批量创建用户并生成随机数密码验证并成功登录!

时间: 2024-10-30 00:40:52

Linux shell脚本学习和实战之一的相关文章

linux shell脚本学习笔记一

一.文件比较运算符-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]-r filename 如果 filename可读,则为真 [ -r

linux shell 脚本学习总结

shell 编程: shell 开头必须指定bash:#!/bin/bash shell 的执行方式: 1.  ./1.sh    执行当前目录下的1.sh,1.sh要是可执行文件 2.  bash  /usr/local/1.sh 定义变量   aa=’qqq’        =两侧不能有空格,使用变量 ${aa} Shell特殊含义变量 $$ 取当前脚本的进程id,就是pid $0  取当前文件名 $n  n是大于0的数字,n是几就是第几个参数 $#  取参数的个数 $* 取所有参数 $?

linux shell脚本学习(三)

1.在grep中, ^标记着单词的开始, $ 标记着单词的结束. 查看一个单词是否在linux自带的词典中,脚本如下: #bin/sh #文件名:checkword.sh word=$1 grep "^$1$"  /usr/share/dict/american-english -q if [ $? -eq 0 ]; then echo $word is a dictionary word; else echo $word is not a dictionary word; fi 2.

linux shell脚本学习xargs命令使用详解

作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据.xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代. xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

Linux Shell脚本编程学习笔记和实战

http://www.1987.name/141.html shell基础 终端打印.算术运算.常用变量 Linux下搜索指定目录下特定字符串并高亮显示匹配关键词 从键盘或文件中获取标准输入 [read命令] 文件的描述符和重定向 数组.关联数组和别名使用 函数的定义.执行.传参和递归函数 条件测试操作与流程控制语句 获取时间日期格式和延时 [date.sleep命令] 内部字段分隔符IFS和脚本的调试DEBUG 显示.读取或拼接文件内容 [cat命令] 文件查找与打印文件列表 [find命令]

Linux系统shell脚本编程——生产实战案例

Linux系统shell脚本编程--生产实战案例     在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口是开放状态,因此依靠手工来检查是可以实现,但比较费时费力,所以需要结合shell脚本来实现批量检查的功能,那么今天就来做个小小的实验. 1.开发脚本前准备 一般大家都知道,测试主机是否在线,常用的命令无非就是ping.nmap,因此,首先找一个地址来测试下ping命令的效果 [[email protected] scripts]

Linux shell脚本基础学习详细介绍(完整版)二

详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续. Linux shell脚本基础已经被分成好几个部分了,这里对控制流程的内容也就马上讲完了,这是最后一部分关于here document,这里举例稍微有点复杂,我们慢慢来分析这个复杂Linux shell脚本. 6. Here documents 当要将几行文字传递给一个命令时,here docu

学习Linux shell脚本中连接字符串的方法

这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"=" echo $value2 把要添加的字符串变量添加{},并且需要把$放到外面. 这样输出的结果是:home=,也就是说连接成功. 又如代码如下: [[email protected] sh]# var1=http://www.3lian.com/etc/ [[email protected] s