文档章节

SHELL常用命令与脚本

eddy_linux
 eddy_linux
发布于 2015/11/05 02:58
字数 959
阅读 26
收藏 1
点赞 0
评论 0
记录一下写的shell命令
 1.列出自己最常用的10个命令
[root@www script]# vim top10.sh
#!/bin/bash
#
#
printf  "COMMAND\tCOUNT\n"
cat ~/.bash_history|awk '{list[$1]++;} \
END \
    {for (i in list)\
    {printf("%s\t\t%d\n",i,list[i])\
    }\
}'|sort -nrk 2 |head

 [root@www script]# ./top10.sh 
COMMAND		COUNT
vim		141
./match_palindrome.sh		76
sh		66
ll		64
sed		56
echo		55
ipvsadm		30
yum		29
cd		26
ip		23
前面表示命令 后面表示使用次数说明一下sort -nrk 2 对第二列进行倒序排列

2.列出占用最近某个时间段cpu占用最多的10个进程

 [root@www script]# cat pcpu_usage.sh 
sec=3600
unit_time=60
steps=$(( $sec / $unit_time ))
echo "Watching Cpu usage...."
for ((i=0;i<steps;i++))
do
    ps -eo comm,pcpu|tail -n +2 >> /tmp/cpu_usage.$$
    sleep $unit_time
done
echo
echo "CPU eaters:"
cat /tmp/cpu_usage.$$|\
awk '
{ process[$1]+=$2; }
END{
    for (i in process)
    {
        printf("%-20s %s\n",i,process[i]);
    }
}'|sort -nrk 2|head
rm /tmp/cpu_usage.$$

[root@www script]# ./pcpu_usage.sh 
Watching Cpu usage....
CPU eaters:
sshd                       0.1
watchdog/0             0
vmmemctl                0
usbhid_resumer      0 
udevd                      0
tail                           0
sync_supers           0
scsi_eh_2               0
scsi_eh_1               0
scsi_eh_0               0
 说明sec=3600测试的总时间,unit_time=60时间间隔
表示总共测试3600s也就是一小时,每次检测间隔60s也就是一分钟这个可以根据自己的情况去设置

 
 3.入侵检测脚本
 [root@www script]# cat login_detech.sh 
#!/bin/bash
#
#
users=`grep -v "invalid" /var/log/secure|grep "Failed password"|awk '{print $(NF-5)}'|sort|uniq`
ip=`grep -v "invalid" /var/log/secure|egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"|sort|uniq`
count=0
for i in $users
do
    countuser=`grep -v "invalid" /var/log/secure|grep "Failed password"|grep "$i"|wc -l`
    for j in $ip
    do
        countfailed=`grep -v "invalid" /var/log/secure|grep "Failed password"|grep "$i"|grep "$j"|wc -l`
        case $countfailed in
            0)
            continue     
            ;;
            *)
                startlogin=`grep -v "invalid" /var/log/secure|grep "Failed password"|grep "$i"|head -1|awk '{for(i=1;i<4;i++)printf $i "" FS;print ""}'`
                endlogin=`grep -v "invalid" /var/log/secure|grep "Failed password"|grep "$i"|tail -1|awk '{for(i=1;i<4;i++)printf $i "" FS;print ""}'`
                echo "============================"
                echo "User:$i"
                echo "IP:$j"
                echo "Login Failed:$countfailed"
                echo "Start Login Failed:$startlogin"
                echo "End Login Failed:$endlogin"
                echo "============================"
                echo
        esac
    done
done
[root@www script]# ./login_detech.sh 
============================
User:oracle
IP:192.168.1.100
Login Failed:3
Start Login Failed:Jul 13 23:09:53 
End Login Failed:Jul 13 23:13:49 
============================
============================
User:oracle
IP:192.168.1.202
Login Failed:2
Start Login Failed:Jul 13 23:09:53 
End Login Failed:Jul 13 23:13:49 
============================
============================
User:root
IP:192.168.1.100
Login Failed:5
Start Login Failed:Jul 13 22:46:42 
End Login Failed:Jul 13 22:46:57 
============================
这里我默认的是试用/var/log/secure文件来进行检测的 
 4.用户管理工具
[root@www script]# cat user_admin.sh 
#!/bin/bash
#
#
function usage()
{
    echo Usage:
    echo Add a new user
    echo $0 -adduser username password
    echo
    echo Remove an existing user
    echo $0 -deluser username
    echo
    echo Suspend a user account
    echo $0 -disable username
    echo
    echo Enable a suspend user account
    echo $0 -enable username
    echo
    echo Set expiry date for user account
    echo $0 -expiry username
    echo
    echo Change password for user account
    echo $0 -passwd username
    echo
    echo Create an existing user group
    echo $0 -newgroup groupname
    echo
    echo Remove an existing user group
    echo $0 -delgroup groupname
    echo
    echo Add a user to a group
    echo $0 -addgroup username groupname
    echo
    echo Show details about a user
    echo $0 --details username
    echo
    echo Show usage
    echo $0 -usage
    echo
    exit
    }
if [ $UID -ne 0 ];then
        echo "Run $0 as root"
        exit 2
fi
case $1 in 
    -adduser)
    [ $# -ne 3 ] && usage
    useradd $2 -p $3 -m
    ;;
    -deluser)
    [ $# -ne 2 ] && usage
    deluser $2 -p --remove-all-files
    ;;
    -shell)
    [ $# -ne 3 ] && usage
    chsh $2 -s $3
    ;;
    -disable)
    [ $# -ne 2 ] && usage
    usermod -L $2
    ;;
    -enable)
    [ $# -ne 2 ] && usage
    usermod -U $2
    ;;
    -expiry)
    [ $# -ne 3 ] && usage
    chage $2 -E $3
    ;;
    -passwd)
    [ $# -ne 2 ] && usage
    psswd $2
    ;;
    -newgroup)
    [ $# -ne 2 ] && usage
    addgroup $2
    ;;
    -delgroup)
    [ $# -ne 2 ] && usage
    delgroup $2
    ;;
    -addgroup)
    [ $# -ne 3 ] && usage
    addgroup $2 $3
    ;;
    -details)
    [ $# -ne 2 ] && usage
    finger $2
    chage -l $2
    ;;
    -usage)
    usage
    ;;
    *)
    usage
    ;;
esac


查看oracle用户的信息
[root@www script]# ./user_admin.sh -details oracle
./user_admin.sh: line 90: finger: command not found
Last password change					: Jul 13, 2014
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

查看使用说明
[root@www script]# ./user_admin.sh 
Usage:
Add a new user
./user_admin.sh -adduser username password
Remove an existing user
./user_admin.sh -deluser username
Suspend a user account
./user_admin.sh -disable username
Enable a suspend user account
./user_admin.sh -enable username
Set expiry date for user account
./user_admin.sh -expiry username
Change password for user account
./user_admin.sh -passwd username
Create an existing user group
./user_admin.sh -newgroup groupname
Remove an existing user group
./user_admin.sh -delgroup groupname
Add a user to a group
./user_admin.sh -addgroup username groupname
Show details about a user
./user_admin.sh --details username
Show usage
./user_admin.sh -usage


© 著作权归作者所有

共有 人打赏支持
eddy_linux
粉丝 18
博文 135
码字总数 188789
作品 0
成都
程序员
SHELL调试方法

如何调试Shell脚本 1) 检查语法错误: 一般来说我们可以通过修改shell脚本的源代码,令其输出相关的调试信息来定位错误,那有没有不修改源代码来调试shell脚本的方法呢?答案就是使用shell的...

xiaofengge315
2014/05/29
0
0
npm scripts 使用指南

Node 开发离不开 npm,而脚本功能是 npm 最强大、最常用的功能之一。 本文介绍如何使用 npm 脚本(npm scripts)。 一、什么是 npm 脚本? npm 允许在文件里面,使用字段定义脚本命令。 上面...

阮一峰
2016/10/11
0
0
Spark源码分析之Spark Shell(下)

继上次的Spark-shell脚本源码分析,还剩下后面半段。由于上次涉及了不少shell的基本内容,因此就把trap和stty放在这篇来讲述。 上篇回顾:Spark源码分析之Spark Shell(上) 总结一下,上面的...

青夜之衫
2017/12/04
0
0
写一个简易的shell脚本(一)

如果经常操作linux 或者配置文件的话以及平时开发和处理文本文件等,会有很多的重复工作,这时如果有一个简易的shell脚本,会大大提升工作的效率,因此我查阅了了一些资料,下载了shell脚本学...

江火似流萤
2016/12/14
41
0
Spark源码分析之Spark Shell(上)

终于开始看Spark源码了,先从最常用的spark-shell脚本开始吧。不要觉得一个启动脚本有什么东东,其实里面还是有很多知识点的。另外,从启动脚本入手,是寻找代码入口最简单的方法,很多开源框...

青夜之衫
2017/12/04
0
0
Shell编程基础篇-上

1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚本的内容。每一个合格 的L...

侯召顺
2017/12/06
0
0
shell介绍,date命令,shell变量

Shell shell是什么? shell是一种脚本语言 可以使用逻辑判断、循环判断等语句; 可以自定义函数; shell是系统命令的集合,比如Windows的批处理命令; shell脚本可以实现自动化运维,能打打增...

若白衣
04/17
0
0
使用if语句编写Shell脚本

在简单的shell脚本程序中,各条语句将按先后顺序依次执行,从而实现批处理的自动化过程。然而,单一的顺序结构使得脚本不够智能,难以处理更加灵活的系统任务。通过正确的使用if语句,使得s...

杨书凡
2017/12/25
0
0
Shell编程进阶篇(完结)

   1.1 for循环语句 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行。 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,...

侯召顺
2017/12/12
0
0
Linux中Shell的用法

本文结合大量实例阐述如何编写一个shell脚本。   为什么要进行shell编程   在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集...

浪泉
2016/12/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

全新内存布局Android5 for one x

众所周知Android5.0默认ART模式,运行速度加倍,软件占用内存也加倍,我们one x这种元老机采用旧的内存布局,data空间2g ART模式下安装几个软件也就不够用了。最近逛国外的xda论坛,发现有大...

CrazyManDF
7分钟前
0
0
web3j转账

 web3 转账功能   为了完成以太坊交易,必须有几个先决条件   1、对方的以太坊地址   2、确定要转账的金额   3、自己地址的转账权限   4、大于转账金额的以太币,以太币转账其实就...

智能合约
8分钟前
0
0
10.28 rsync工具介绍 , rsync常用选项, rsync通过ssh同步

rsync远程同步 重点!重点!!重点!!! 例子 • rsync -av /etc/passwd /tmp/1.txt • rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt rsync格式 • rsync [OPTION] … SRC DEST • rs......

Linux_老吴
22分钟前
0
0
iis php 环境搭建,非常详细的教程

准备篇 一、环境说明: 操作系统:Windows Server 2016 PHP版本:php 7.1.0 MySQL版本:MySQL 5.7.17.0 二、相关软件下载: 1、PHP下载地址: http://windows.php.net/downloads/releases/ph...

T_star
24分钟前
0
0
Day35 rsync通过服务同步

rsync通过服务同步 rsyncd.conf配置文件详解 port:指定在哪个端口启动rsyncd服务,默认是873端口。 log file:指定日志文件。 pid file:指定pid文件,这个文件的作用涉及服务的启动、停止等...

杉下
29分钟前
1
0
【最新最全】为 iOS 和 Android 的真机和模拟器编译 Luajit 库

编译 Luajit 库,的确是一个挑战。因为官网的教程,在当前版本的 Xcode 和 NDK 环境中,已经不适用了。以前只是编译了适用于真机的 Luajit 库。最近在尝试编译模拟器 Luajit 库,就顺便梳理了...

ios122
29分钟前
0
0
rsync至ssh同步

rsync: 文件同步工具,可实现“增量拷贝”;使用yum安装rsync包 常用选项:-a=-rtplgoD (-r同步目录,-t保持文件的时间属性,-p保持文件的权限属性,-l保持软连接,-g保持文件的属组,-o保持...

ZHENG-JY
35分钟前
0
0
TradingView 学习笔记

#前言 公司最后需要使用TradingView展示K线图走势。由于之前没接触过,拿到文档时一脸蒙逼。还好找到二篇文章+Demo代码,直接改改就行了。 #被批 由于上面的懵懂,有个问题困扰4个小时没解决...

hihubs
35分钟前
0
0
10.28 rsync工具介绍~10.31 rsync通过ssh同步

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而...

洗香香
37分钟前
1
0
卷积为什么要旋转180度

参考《最容易理解的对卷积(convolution)的解释》 https://blog.csdn.net/bitcarmanlee/article/details/54729807 这篇博客详细讲解了“卷积”,提及了为什么要反转180度,我简述下。 1.卷积的...

datadev_sh
46分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部