当前位置: 首页 > news >正文

day29:关闭服务|

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1、

在centos6系统里,我们可以使用ntsysv关闭不需要开机启动的服务,当然也可以使用chkconfig工具来实现。

写一个shell脚本,用chkconfig工具把不常用的服务关闭。脚本需要写成交互式的,需要我们给它提供关闭的服务名字。

参考答案

#!/bin/bash
#这个脚本用来关闭服务
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-14

LANG=en

while :
do
    chkconfig --list 2>/dev/null|grep '3:on' |awk '{print $1}' > /tmp/on_sev.txt
    echo -e "\033[32m系统里开启了这些服务: \033[0m"
    cat /tmp/on_sev.txt
    echo
    read -p "Please select a service from this list: " s

    if ! grep -qw "$s" /tmp/on_sev.txt
    then
	echo -e "\033[31m你提供的服务名并未开启.\033[0m"
	continue
    fi
    chkconfig $s off
    break
done 

2、

在生产环境中,经常遇到tomcat无法彻底关闭,也就是说用tomcat自带shutdown.sh脚本无法将java进程完全关掉。所以,需要借助shell脚本,将进程杀死,然后再启动。

写一个shell脚本,实现上述功能。彻底杀死一个进程的命令是 kill -9 pid。

参考答案

#!/bin/bash
#这个脚本用来彻底杀死Tomcat进程
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-14

dir=/usr/local/tomcat/bin/

java_pc()
{
    pgrep java|wc -l
}

	
cd $dir
./shutdown.sh

count=0

while [ $count -lt 5 ]
do
    n=`java_pc`
    if [ $n -gt 0 ]
    then
	killall java
	count=$[$count+1]
	sleep 1
    else
	break
    fi
done
    
n=`java_pc`
if [ $n -gt 0 ]
then 
    killall -9 java
fi

n=`java_pc`
if [ $n -gt 0 ]
then
    echo "Tomcat无法强制杀死。"
    exit
fi

cd $dir
./startup.sh

3、

至少用两种方法,批量把当前目录下面所有文件名后缀为.bak的后缀去掉,比如1.txt.bak去掉后为1.txt

参考答案

#!/bin/bash
#这个脚本用来去掉文件名后缀
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-14

for f in `ls -d  ./*.bak `
do
#    mv $f  `echo $f|sed 's/.bak$//'`
    f1=`echo $f|awk -F '.bak$' '{print $1}' `
    mv $f $f1
done

4、

写一个shell脚本,查询指定域名的过期时间,并在到期前一周,每天发一封提醒邮件。

参考答案

#!/bin/bash
#这个脚本用来检查域名是否到期
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-14

mail_u=admin@admin.com
#当前日期时间戳,用于和域名的到期时间做比较
t1=`date +%s`

#检测whois命令是否存在,不存在则安装jwhois包
is_install_whois()
{
    which whois >/dev/null 2>/dev/null
    if [ $? -ne 0 ]
    then
	yum install -y epel-release
        yum install -y jwhois
    fi
}

notify()
{
    #e_d=`whois $1|grep 'Expiry Date'|awk '{print $4}'|cut -d 'T' -f 1`
    e_d=`whois $1|grep 'Expiration'|tail -1 |awk '{print $5}' |awk -F 'T' '{print $1}'`
    #如果e_d的值为空,则过滤关键词'Expiration Time'
    if [ -z "$e_d" ]
    then
        e_d=`whois $1|grep 'Expiration Time'|awk '{print $3}'`
    fi
    #将域名过期的日期转化为时间戳
    e_t=`date -d "$e_d" +%s`
    #计算一周一共有多少秒
    n=`echo "86400*7"|bc`
    e_t1=$[$e_t-$n]
    e_t2=$[$e_t+$n]
    if [ $t1 -ge $e_t1 ] && [ $t1 -lt $e_t ]
    then
        python mail.py  $mail_u "Domain $1 will  to be expired." "Domain $1 expire date is $e_d."
    fi
    if [ $t1 -ge $e_t ] && [ $t1 -lt $e_t2 ]
    then
        python mail.py $mail_u "Domain $1 has been expired" "Domain $1 expire date is $e_d." 
    fi
}

#检测上次运行的whois查询进程是否存在
#若存在,需要杀死进程,以免影响本次脚本执行
if pgrep whois &>/dev/null
then
    killall -9 whois
fi

is_install_whois

for d in aaa.com bbb.com  aaa.cn
do
    notify $d
done

5、

写一个shell脚本,当我们执行时,提示要输入对方的ip和root密码,然后可以自动把本机的公钥增加到对方机器上,从而实现密钥认证。

参考答案

#!/bin/bash
#这个脚本用来自动配置密钥认证
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-14

read -p "输入一个IP地址: " ip
read -p "输入此机器的root密码: " pasd

is_install()
{
    if ! rpm -q $1 &>/dev/null
    then
	yum installl -y $1
    fi
}

is_install openssh-clients
is_install expect

if [ ! -f ~/.ssh/id_rsa.pub ]
then
    echo -e "\n" |ssh-keygen  -P ''
fi

cat > key.expect <<EOF
#!/usr/bin/expect
set host [lindex \$argv 0]
set passwd [lindex \$argv 1]
spawn ssh-copy-id root@\$host
expect {
    "yes/no" { send "yes\r"; exp_continue}
    "password:" { send "\$passwd\r" }
}
expect eof
EOF

chmod a+x key.expect

./key.expect $ip $pasd

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/yuanhaohao/blog/3006111

相关文章:

  • Python 爬虫十六式 - 第六式:JQuery的假兄弟-pyquery
  • 本科理工男如何学习Linux
  • [洛谷P2511][HAOI2008]木棍分割
  • C语言之路-2-判断
  • JavaScript面向对象名词详解
  • java对象拷贝最完全解说
  • JVM,DVM,ART
  • 微软工程师认为 Mozilla 也应该拥抱 Chromium
  • 司法部:做好春节期间在押罪犯的离监探亲工作
  • 斯内德将出任2020欧洲杯荷兰地区形象大使
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • 使用Jmeter输出错误响应结果到日志
  • Hunt framework 2.0.0 发布,简单且高性能的 Web 服务框架
  • 补贴退坡幅度进一步加大 新能源汽车会涨价吗
  • Linux基础_软件包管理
  • ES6指北【2】—— 箭头函数
  • hexo+github搭建个人博客
  • 【Linux系统编程】快速查找errno错误码信息
  • 【个人向】《HTTP图解》阅后小结
  • Android优雅地处理按钮重复点击
  • Create React App 使用
  • happypack两次报错的问题
  • Hexo+码云+git快速搭建免费的静态Blog
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java程序员幽默爆笑锦集
  • Java的Interrupt与线程中断
  • k个最大的数及变种小结
  • Linux Process Manage
  • Service Worker
  • Spring Cloud中负载均衡器概览
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Web Storage相关
  • webpack入门学习手记(二)
  • 从伪并行的 Python 多线程说起
  • 机器学习 vs. 深度学习
  • 基于axios的vue插件,让http请求更简单
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 前端面试之CSS3新特性
  • 数据可视化之 Sankey 桑基图的实现
  • 思否第一天
  • 一、python与pycharm的安装
  • 主流的CSS水平和垂直居中技术大全
  • AI算硅基生命吗,为什么?
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • #stm32整理(一)flash读写
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (离散数学)逻辑连接词
  • (六)Hibernate的二级缓存
  • (四)【Jmeter】 JMeter的界面布局与组件概述