shell 脚本编程07

el/2024/5/23 1:37:38

shell 脚本编程
一、一键部署脚本(源码包安装软件nginx)
tar -xf lnmp_soft…gz
cd lnmp_soft
tar -xf nginx…gz
cd nginx…
yum -y install gcc pcre-devel zlib-devel
./configure
make
make install

确认:ls /usr/local/nginx
netstat -nulpt | grep 80 /nginx与apache冲突
systemctl stop httpd

二、nginx启动脚本
用法:/usr/local/nginx/sbin/nginx 回车 无提示则启动成功
网页输入172.40.55.115看到nginx欢迎界面

或做个连接 ln -s /usr/local/nginx/sbin/nginx /sbin

echo $PATH
nginx -s stop 关闭服务
没有重启,需要脚本里先关闭再开,没有查状态,需脚本
/usr/local/nginx/logs/nginx.pid 文件有代表服务开着,没有则代表关闭,判断服务是否启动
nginx 回车 开服务

#cat nginx.sh
#!/bin/bash
case $1 in
start)
if [ ]
fi
nginx;; #启动
stop)
if [ ]
fi
nginx -s stop;;
restart)
nginx -s stop
nginx;;
status)
if [ -f /usr/local/nginx/logs/nginx.pid ];then
echo “running”
else
echo “stop”

fi;;
*)
echo “nginx[ start | stop | restart |status ]”
esac

优化思路:if 判断

三、进度条脚本(可以给任何程序用)
cp -r /bin/ /tmp/
############ loading … 10% 20%…

jindu(){
while :
do
echo -ne “\033[42m \033[0m”
sleep 0.1
done
}
jindu & /后台
cp -a $1 $2
kill $!
echo “结束!”

echo $! /最后一个后台进程的id号

du -sh /etc
du -sh /tmp/etc
10/100*100

四、5分钟自动检测一次,将破解密码尝试远程本机的ip提取到ip.txt
相同ip不导入,自己连自己除外,密码输入错误3次,才写入黑名单
awk ‘Failed/{print $11}’ /var/log/secure >>ip.txt 取出失败登录的ip
grep

五、分布式存储、分布式集群(fastdfs,swift分布式软件)
大数据 【数据量大,存不下】(EB)
num=$[RANDOM%4+1] /4台电脑
cp a.txt $num

1.启动脚本
编写nginx启动脚本
-脚本支持start、stop、reload、restart、status
-脚本支持报错提示
-脚本具有判断是否已经开启或关闭的功能
思路:使用case语句实现主体功能、使用case语句调用函数实现具体启动、关闭等操作、使用if测试判断程序是否已经开启

2.一键部署软件脚本
一键安装nginx

  • 一键源码安装nginx软件
    -脚本自动安装相关软件的依赖包
    -脚本自动判断yum是否可用
    -脚本安装支持日志,日志文件为/var/log/nginx.log
    思路:使用数据过滤以及if语句判断yum源是否可用、case语句根据安装的软件自动安装依赖包、通过重定向生成日志文件/var/log/nginx.log

3.编写分布式存储脚本
-使用记录日志实现简单分布式存储
-4台rhel6.5主机,3台共享服务器,1台分布式存储服务器
-分布式存储服务器,通过mount将3台共享服务器的共享目录挂载到本地{1,2,3}目录
-用户使用脚本进行数据读写时,脚本随机将数据文件分发到3个共享目录下
思路:创建文件存档日志文件、根据日志文件读取数据、脚本 -w 文件名–将文件随机写入1、2、3目录、脚本 -r 文件名—从1、2、3中读取文件

4.编写安全检测脚本
防止远程ssh暴力破解密码

  • 检测ssh登录日志,如果远程登录帐号名错误3次,则屏蔽远程主机的IP
    -检测ssh登录日志,如果远程登录密码错误3次,则屏蔽远程主机的IP
    思路:ssh登录日志/var/log/secure、分析日志文件格式、找出用户名密码错误的规律并提取有效数据、对有效数据汇总统计,实现黑名单过滤

5.编写进度显示脚本
实现带进程显示的复制脚步
-默认linux的cp命令不具有进度显示
-我们需要自己编写脚本实现进度显示
-可以使用进度条的方式,或者显示百分比的方式
思路:根据文件数量、或容量统计进度、进度算法:当前进度/总进度*100
####################################

shell 脚本编程
day 07

下载ftp://172.40.50.118/NSD1704/share/lnmp_soft-2017-03-28.tar.gz

一、一键部署脚本(源码包安装软件nginx)
tar -xf lnmp_soft…gz
cd lnmp_soft
tar -xf nginx…gz
cd nginx…
yum -y install gcc pcre-devel zlib-devel
./configure
make
make install

确认:ls /usr/local/nginx
netstat -nulpt | grep 80 /nginx与apache冲突
systemctl stop httpd

二、nginx启动脚本
用法:/usr/local/nginx/sbin/nginx 回车 无提示则启动成功
网页输入172.40.55.115看到nginx欢迎界面

或做个连接 ln -s /usr/local/nginx/sbin/nginx /sbin

echo $PATH
nginx -s stop 关闭服务
没有重启,需要脚本里先关闭再开,没有查状态,需脚本
/usr/local/nginx/logs/nginx.pid 文件有代表服务开着,没有则代表关闭,判断服务是否启动
nginx 回车 开服务

#cat nginx.sh
#!/bin/bash
case $1 in
start)
if [ ]
fi
nginx;; #启动
stop)
if [ ]
fi
nginx -s stop;;
restart)
nginx -s stop
nginx;;
status)
if [ -f /usr/local/nginx/logs/nginx.pid ];then
echo “running”
else
echo “stop”

fi;;
*)
echo “nginx[ start | stop | restart |status ]”
esac

优化思路:if 判断

三、进度条脚本(可以给任何程序用)
cp -r /bin/ /tmp/
############ loading … 10% 20%…

jindu(){
while :
do
echo -ne “\033[42m \033[0m”
sleep 0.1
done
}
jindu & /后台
cp -a $1 $2
kill $!
echo “结束!”

echo $! /最后一个后台进程的id号

du -sh /etc
du -sh /tmp/etc
10/100*100

四、5分钟自动检测一次,将破解密码尝试远程本机的ip提取到ip.txt
相同ip不导入,自己连自己除外,密码输入错误3次,才写入黑名单
awk ‘Failed/{print $11}’ /var/log/secure >>ip.txt 取出失败登录的ip
grep

五、分布式存储、分布式集群(fastdfs,swift分布式软件)
大数据 【数据量大,存不下】(EB)
num=$[RANDOM%4+1] /4台电脑
cp a.txt $num

1.启动脚本
编写nginx启动脚本
-脚本支持start、stop、reload、restart、status
-脚本支持报错提示
-脚本具有判断是否已经开启或关闭的功能
思路:使用case语句实现主体功能、使用case语句调用函数实现具体启动、关闭等操作、使用if测试判断程序是否已经开启

2.一键部署软件脚本
一键安装nginx

  • 一键源码安装nginx软件
    -脚本自动安装相关软件的依赖包
    -脚本自动判断yum是否可用
    -脚本安装支持日志,日志文件为/var/log/nginx.log
    思路:使用数据过滤以及if语句判断yum源是否可用、case语句根据安装的软件自动安装依赖包、通过重定向生成日志文件/var/log/nginx.log

3.编写分布式存储脚本
-使用记录日志实现简单分布式存储
-4台rhel6.5主机,3台共享服务器,1台分布式存储服务器
-分布式存储服务器,通过mount将3台共享服务器的共享目录挂载到本地{1,2,3}目录
-用户使用脚本进行数据读写时,脚本随机将数据文件分发到3个共享目录下
思路:创建文件存档日志文件、根据日志文件读取数据、脚本 -w 文件名–将文件随机写入1、2、3目录、脚本 -r 文件名—从1、2、3中读取文件

4.编写安全检测脚本
防止远程ssh暴力破解密码

  • 检测ssh登录日志,如果远程登录帐号名错误3次,则屏蔽远程主机的IP
    -检测ssh登录日志,如果远程登录密码错误3次,则屏蔽远程主机的IP
    思路:ssh登录日志/var/log/secure、分析日志文件格式、找出用户名密码错误的规律并提取有效数据、对有效数据汇总统计,实现黑名单过滤

5.编写进度显示脚本
实现带进程显示的复制脚步
-默认linux的cp命令不具有进度显示
-我们需要自己编写脚本实现进度显示
-可以使用进度条的方式,或者显示百分比的方式
思路:根据文件数量、或容量统计进度、进度算法:当前进度/总进度*100


http://www.ngui.cc/el/3478364.html

相关文章

locate命令和slocate命令都用来查找文件或目录

http://linux.51yip.com/search/whereis 索引的作用(为什么要有索引?): 当要对大数据文件进行随机 读取时,一种方法是先全部读入内存,以数组形式存储,通过数组索引下标形式进行访问,…

Linux 从开机到登陆界面的过程 三次四次断开 linux破密码 iptables详解

描述 Linux 系统从开机到登陆界面的启动过程 (1)开机 BIOS 自检,加载硬盘。 (2)读取 MBR,MBR 引导。 (3)grub 引导菜单(Boot Loader)。 (4)加载内核 kernel。 (5)启动 init 进程,依据 inittab 文件设定运行级别 (6)init 进程,执行 rc.sysinit 文件。 (7)启动内核模块,执行不同级…

数据加密 AIDE入侵检测系统 扫描与抓包 内核熵池

curl myip.ipip.net #查看自己的上网的网关ip ctrl v shift i shift # esc键 #每行最前批量加#号 快速的给内核熵池喂随机数 Entropy(熵) PRNG(伪随机生成器) RNG(随机数生成器) 有两种方法可以从熵池中…

掩码 mail virsh工具 tmux分频工具

sed -i ‘/#/d’ /etc/maxscale.cnf #删除文件中的以#号开头的行 ~]#PATH/usr/local/mysql/bin:KaTeX parse error: Expected EOF, got # at position 25: … ~]#̲vim /etc/profil…PATH #将源码安装的软件 绝对路径的命令永久设置成系统命令 ~]#source /etc/profile 单引号…

Linux文件系统简介及其系统管理工具

常见的文件系统 Linux文件系统: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap swap: 交换分区 光盘:iso9660 Windows:fat32, ntfs Unix: FFS, UFS, JFS2 网络文件系统:NFS, CIFS 集群文件系统:GFS2, OCFS2 分布式文件系统&…

命令行工具恢复文件 foremost 和 extundelete 简介

使用 Linux 文件恢复工具 Linux 文件恢复的原理 inode 和 block 首先简单介绍一下 Linux 文件系统的最基本单元:inode。inode 译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该…

chkconfig ntsysv

chkconfig 提供了一个维护/etc/rc[0~6] d 文件夹的命令行工具,它减轻了系统直接管理这些文件夹中的符号连接的负担。chkconfig主要包括5个原始功能:为系统管理增加新的服务、为系统管理移除服务、列出单签服务的启动信息、改变服务的启动信息和检查特殊服…

bash 的好用的快捷键 目录介绍

bash 的好用的快捷键 ctrla:光标移到行首。   ctrlb:光标左移一个字母   ctrlc:杀死当前进程。   ctrld:退出当前 Shell。   ctrle:光标移到行尾。   ctrlh:删除光标前一个字符,同 backspace 键相同。   ctrlk:清除光标后至行尾的内容。   ctrll:清屏…

重设 root 密码 file命令 locate文件查找 find grep whereis

重设 root 密码 1)重启虚拟机 server,出现 GRUB 启动菜单时按 e 键进入编辑状态 2)找到 linux16 所在行,末尾添加 rd.break consoletty0,按 Ctrlx 键进恢复模式 3)以可写方式挂载硬盘中的根目录,并重设 root 密码: switch_root:/# mount -o remount,rw /sysroot #以可读写方式重…

awk的应用

awk ‘{print “内容” > “文件名”}’ 文件名 #使用AWK打印内容追加到文件里面 awk ‘{ip[$1]} END{for(i in ip){print ip[i],i}}’ /var/log/httpd/access_log | sort -n 统计访问http服务次数的IP地址公式必背 编写安全检测脚本 4.1 问题 本案例要求编写脚…