登 录
注 册
< 系统运维
Linux
计算机系统
系统工具
常用特殊命令
常用shell脚本
Nginx基本概念
Nginx多端口代理
Nginx负载均衡配置
Nginx负载均衡策略
Nginx动静分离
Nginx高可用
热门推荐>>>
中台架构
中台建设与架构
Hadoop
源码分析-NN启动(三)
HBase
HBased对接Hive
Python
数据导出工具
Flink
3分钟搭建Flink SQL测试环境
Kafka
Kafka对接Flume
深度学习
卷积神经网络
数据结构与算法
选择合适的算法
MySQL
数据备份恢复
计算机系统
信号量同步线程
Hive
Hive调优参数大全
其他框架
Azkaban Flow1.0与2.0
ClickHouse
表引擎-其他类型
技术成长
最好的职业建议
精选书单
技术成长书单—机器学习
技术资讯
数据在线:计算将成为公共服务
开发工具
IntelliJ IDEA 20年发展回顾(二)
系统工具
Mac命令行工具
虚拟化
内存虚拟化概述
云原生
云原生构建现代化应用
云服务
一文搞懂公有云、私有云...
Java
Spring Boot依赖注入与Runners
Go
Go函数与方法
SQL
SQL模板
安全常识
一文读懂SSO
当前位置:
首页
>>
Linux
>>
常用shell脚本
常用shell脚本
2020-07-02 23:57:11 星期四 阅读:1658
![](/static/images/article_images/1693752763.0572128.jpeg) ####自动登录跳板机 实现原理:使用expect脚本实现自动检测密码(password)单词,并发送跳板机密码 ``` #!/usr/bin/expect # filename: jumper.sh set timeout 15 spawn ssh user@jumper.com expect "password:" send "xxxx " interact ``` 执行方式:直接./执行,而不是sh执行,因为使用的shell不是bash,而是expect ``` chmod 777 jumper.sh ./jumper.sh ``` ####打印指定目录下的最大文件大小和名称 linux文件系统写法 ``` #!/bin/bash a=0 b=0 name="cs" #把ls命令查询到的文件名(可能有多个)放在filename变量里,再循环遍历出每一个 for filename in $(ls /home/hadoop/ff) do #ls命令的输出结果按照空格分割,截取第5部分(文件大小) a=$(ls -l /home/hadoop/ff/$filename |awk -F " " "{print $5}") #判断文件大小 if test $a -gt $b then b=$a; name=$filename fi done echo $name echo $b ``` hadoop hdfs文件系统写法 ``` #!/bin/bash a=0 b=0 name="name" #因为hadoop fs 输出的内容是 #-rw-r--r-- 2 hadoop supergroup 4617 2017-12-05 12:31 /user/hadoop/hehe.txt #所以需要按空格分割截取出文件路径来(/user/hadoop/hehe.txt)再按照斜杠分割文件路径取出文件名(hehe.txt)。放到filename变量(相当于一#个数组)里,并且要去除空行(sed "/^$/d") for filename in $(hadoop fs -ls /user/hadoop/ | awk -F " " "{print $8}" | awk -F "/" "{print $4}" | sed "/^$/d"); do #循环遍历filename,并取出第5部分(大小)赋值给a变量 a=$(hadoop fs -ls /user/hadoop/$filename | awk -F " " "{print $5}") if test $a -gt $b; then b=$a name=$filename fi done echo $b echo $name ``` ####查看网卡流量 ``` #!/bin/bash #这个脚本是死循环,每7秒钟执行循环一次(刷新一次) while : ; do time=`date +%m"-"%d" "%k":"%M` day=`date +%m"-"%d` #显示第八行(如果是root用户,不用打/sbin/ifconfig,直接ifconfig),按照空格分截取第二部分,从第7个字符开始截取,其实就是截取出网卡收到的字节数 #cut -c 7-也可以使用awk -F ":" "{print $2}"(按照冒号分为两部分,取出第二部分) rx_before=`/sbin/ifconfig eth0|sed -n "8"p|awk "{print $2}"|cut -c 7-` #上面这句也可以写成/sbin/ifconfig eth0|sed -n "8"p|awk -F " " "{print $2}"|awk -F ":" "{print $2}" #显示第八行,按照空格分截取第6部分,从第7个字符开始截取,其实就是截取出网卡发送的字节数 tx_before=`/sbin/ifconfig eth0|sed -n "8"p|awk "{print $6}"|cut -c 7-` #休眠2秒 sleep 2 #再截取出两秒后的网卡接收和发送字节数 rx_after=`/sbin/ifconfig eth0|sed -n "8"p|awk "{print $2}"|cut -c 7-` tx_after=`/sbin/ifconfig eth0|sed -n "8"p|awk "{print $6}"|cut -c 7-` #计算2秒内网卡接收和发送的字节的平均数 rx_result=$[(rx_after-rx_before)/1024/2] tx_result=$[(tx_after-tx_before)/1024/2] #输出计算结果到指定文件,注意单位是kbps echo "$time Now_In_Speed: "$rx_result"kbps Now_OUt_Speed: "$tx_result"kbps" >> /home/hadoop/slb.txt #休眠5秒再进入下一个循环(相当于7秒刷新一次) sleep 5 done ```