shell脚本学习案列

chmod u+x

./shxx

1.简单的shell程序设计 sh example 执行

显示所在的目录和文件

$cat example

#!/bin/sh

#this is to show what a example looks like

echo "Our first example"

echo # this

echo "we are "

/bin/pwd

echo

echo "This directory contains the following file"

/bin/ls

2.写一个周记统计磁盘,用户了

sh sysunfo

#!/bin/sh

#auto mail for system info

/bin/date +%F >> /tmp/sysinfo

echo "disk info:- >>/tmp/sysinfo

/bin/df -h >> /tmp/sysinfo

echo >> /tmp/sysinfo

echo "online users:- >> /tmp/sysinfo

/usr/bin/who | /bin/grep -v root >> /tmp/sysinfo

echo >> /tmp/sysinfo

echo "momory info:- >> /tmp/sysinfo

/usr/bin/free -m >> /tmp/sysinfo

echo >> /tmp/sysinfo

#wirte root

/usr/bin/write root < /tmp/sysinfo && /bin/rm /tmp/sysinfo

# crontab -e

#0 9 * * 1-5 script

3.自动化备份的脚本

$1 代表位置变量

sh autoback

#!/bin/sh

#backup fies by date

DATE=`/bin/date +%Y%m%d`

/bin/tar -cf /backup/$1.$DEATE.tar $1 > /dev/null 2>> /backup/$1.back.log

/bin/gzip /backup/$1.$DATE.tar

if[$? -eq 0]

then

echo "$s1 $DATE backup successfuly " >> /backup/$1.back.log

else

echo "$ERROR: falure $1 $DATE back!" >> /backup/$1.back.log

fi

#crontab -e

# 0 3 * * 2,5 acript

4.expr变量的使用  元算法

sh expr

#!/bin/sh

a=10

b=20

c=30

value1=`expr $a +$b+$c`

echo"The value of vaule2 is value2"

vaule2=`expr $c /$b`

echo"The value of vaule2 is value2"

value3=`expr $a +$c /$b`

echo "The value of value 4 is $value4"

5.test的字符判断的值 (在服务器中的检测服务有么有启动,没启动则启动)

cat test.apache

#!/bin/sh

# if....esle" usage

# using this program to show your system‘s services.

echo "NOW, the web service of this Linux system will be detect..."

echo

# Detect www service

web=`/usr/bin/pgrep httpd`

if {"$web"=""}

then

echo "The web service is running."

else

echo "The web service is NOT running."

/etc/rc.d/init.d/httpd start

fi

6.键盘输入读取用户所在组、管理群等信息 例 ./userinfo root

cat userinfo.sh

#!/bin/sh

#display user‘s inof ...

/bin/echo "Please input the username"

read username

/bin/grep $username /etc/passwd > /dev/null 2> /dev/null

if {$? -eq 0}

then

/bin/echo "username is : $username"

else

/bin/echo "user $username does not exist"

exit 1

fi

/bin/echo

# list /etc/passwd info

userinfo=`/bin/grep ``$username:x /etc/passwd`

userid=`/bin/echo $userinfo | /bin/awk -F :`{print $3}``

groupid=`/bin/echo $userinfo | /bin/awk -F :`{print $4}``

homedir=`/bin/echo $userinfo | /bin/awk -F :`{print $6}``

shell=`/bin/echo $userinfo | /bin/awk -F :`{print $7}``

#get group name from GID

grouptmpname=`cat /etc/group | /bin/grep :x:$groupid`

groupname=`/bin/echo $grouptmpname | /bin/awk -F : `{print $1}``

/bin/echo "user id is : $userid"

/bin/echo "default group is : $grouptmpname "

/bin/echo "shell is :$shell"

/bin/echo "group nembers info:"

# get login info

userlogin=`/user/bin/who | /bin/grep $ username`

/bin/echo

# get login info

userlogin=`/usr/bin/groups $ username`

if ["$userlogin"!=""]

then

/bin/echo/ "username is online"

else

/bin/echo/ "username NOT logged in"

fi

7. 踢出用户

实例 sh  killuser.sh test

cat killuser.sh

#!/bin/sh

# The script to kill logined user.

username="$1"

/bin/ps aux | /bin/grep $username | /bin/awk ‘{print $2}‘ > /tmp/temp.pid

killid =`cat /tmp/temp.pid`

for PID in $killid

do

/bin/kill -9 $PID 2> /dev/null

done

8.批量添加用户

cat useradd.sh

#!/bin/sh

#Authur: Sam < E-mail :[email protected]>

# The script to add user

# /etc/passwd info

echo "pleass input username:"

read name

echo "pleass input number:"

read num

n=1

while [$n -le $num ]

do

/usr/sbin/useradd $name$n

n=`expr $n+1`

done

# /etc/shadow info

echo " pleass input the password:"

read passwd

m=1

while [$m -le $num]

do

echo $passwd | /usr/bin/passwd --stdin $name$m > /dev/null

m=`expr $m + 1`

done

9.删除用户

cat deluser.sh

#!/bin/sh

echo "please input username:"

read name

echo "please input number:"

read num

sum =0

while [ $sum -lt $sum]

do

sum=`expr $sum +1`

/usr/sbin/userdel -r $name$sum

done

10.对比命令的查看修改对比

cat setuid.sh

#!/bin/sh

# After the system installed,please check setudi files first for secrity

# mkdir /backup

#find / perm -4000 -o -perm -2000 > /backup /setuid.list

/usr/bin/find /-perm -4000 -o -perm -2000 > /tmp/setuid.check 2> /dev/null

for file in `/bin/cat /tmp/setuid.check`

do

/bin/grep $file /backup/setuid.list >dev/null

if [ "$?" !="0" ]

then

echo "$file isn‘t in list! it‘s danger!!"

fi

done

/bin/rm /tmp/setuid.check

时间: 2024-08-09 02:09:37

shell脚本学习案列的相关文章

笔记——shell脚本学习指南

<shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超过64个字符. 2.在某些系统上,命令行部分包含了命令的完整路径名称.不过有些系统却不是这样:命令行的部分会原封不动地传递给被引用的程序. 3.别在选项之后放置任何空白,因为空白也会跟着选项一起传递给被引用的程序. 4.你需要知道解释其的完整路径名称.这可以用来规避可移植问题,因为不同的厂商可能将同样的东西放

shell脚本学习与总结

shell脚本学习总结,东西很多,供初学者参考. shell脚本是区分大小写的. 2.Unix特殊字符有: ( ; $ ? & * () [] ` ' " + 使用其时要进行转义() 3.Shell的注释以#开头 4.函数的定义Function fuction_name(){ Command to execute} 调用时直接用function_name. 5.控制结构 1)If...then语句 If [ test_command ]    Then    Commandsfi2)If

shell脚本学习指南

以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bash shell 脚本的第一行,#!之后应该是什么? 如果拿这个问题去问别人,不同的人的回答可能各不相同.我见过/usr/bin/env bash,也见过/bin/bash,还有/usr/bin/bash,还有/bin/sh,还有/usr/bin/env sh.这算是编程界的“’茴’字四种写法”了. 在多数情况下,以上五种写法都是等价的.但是,写过程序的人都知道:“少数情况”里往往隐藏

shell脚本学习笔记系列--1

一.学好shell编程的知识储备 1.相关Linux系统命令应用: 2.Vi/vim 编辑器的熟练使用,相关客户端软件的设置: 3.基础的服务,系统服务ntp,crond,网络服务:nfs,rsync,inotify,sersync,ssh,lanmp等. 补充:清空日志的三种方法: 1)echo  " " > filename.log 2)>filename.log 3)cat  /dev/null > filename.log 注:工作中有的时候不能删除(日志)文

shell脚本学习笔记 (sed的高级用法----模式空间和保持空间)

前段时间在学习shell脚本,上次有提到sed的模式空间和保持空间概念,但是一直没有研究好,这两天研究了一下,所以将它发出来,不是很全面,仅仅供大家参考一下. 保持空间sed在正常情况下,将处理的行读入模式空间,脚本中的"sed command(sed命令)"就一条接着一条进行处理,直到脚本执行完毕.然后该行被输出,模式被清空:接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕. 模式空间可以比喻为一个生产线,而保持空间则可以被比喻为仓库,这个比喻希望可以帮助大家理解

Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具

摘要:第三章讨论的是编写Shell脚本时经常用到的两个基本操作.第四章总共介绍了约30种处理文本文件的好用工具. 第三章 查找与替换 概括:本章讨论的是编写Shell脚本时经常用到的两个基本操作:文本查找.文本替换. 3.1  查找文本 如需从输入的数据文件中取出特定的文本行,主要的工具为grep程序.POSIX采用三种不同grep变体:grep.egrep.fgrep整合为单个版本,通过不同的选项,分别提供这三种行为模式.who | grep -F root上面使用-F选项,以查找固定字符串r

shell脚本学习笔记:通过shell实现linux用户管理和监控

学习shell做的第一个脚本,感谢云知梦李强强老师的shell编程教程 创建shell脚本文件: touch menu.sh touch index.sh touch welcome.sh 赋予脚本文件可执行权限: chmod a+x menu.sh index.sh welcome.sh menu.sh #!/bin/bash #menu.sh function menu(){ title="My Home" name="Randy" time=`date +%Y

shell 脚本学习

距离上一次写东西又隔了一段时间了,期间一直跟着私房菜学习,还是没养成定期做记录的习惯,今天就来写第一个脚本的编写吧. 经过几天的积累,学习了下shell脚本的编写,目前掌握的还不太成熟,凡事从小入手肯定是没错的,先写个简单的吧(难的也不会写o(╯□╰)o). 这个脚本的执行方法,就是输入生日来计算当前日期距离生日还有多少天,如果已经过完生日则计算来年生日的时间. #!/bin/bash #Program: #    Calculate how long it takes to have a bi

Shell脚本学习一:shell三种引号学习

一.Shell中变量的声明和引用 [[email protected] ~]# var1=Hello [[email protected] ~]# echo $var1 Hello [[email protected] ~]# echo ${var1}World HelloWorld 在Shell中,变量的引用使用$. 上面的代码中,$var1就是对变量var1的引用,输出的结果是Hello. 如果想链接其他字符,将变量放到大括号{}里面,然后在后面跟上其他内容. 例如上面的代码中:${var1