生产环境中有哪些常用的shell脚本
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容主要讲解"生产环境中有哪些常用的shell脚本",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"生产环境中有哪些常用的shell脚本"吧!1、从FTP
千家信息网最后更新 2025年01月20日生产环境中有哪些常用的shell脚本
本篇内容主要讲解"生产环境中有哪些常用的shell脚本",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"生产环境中有哪些常用的shell脚本"吧!
1、从FTP服务器下载文件
#!/bin/bashif [ $# -ne 1 ]; then echo "Usage: $0 filename"fidir=$(dirname $1)file=$(basename $1)ftp -n -v # -n 自动登录open 192.168.1.10 # ftp服务器user admin passwordbinary # 设置ftp传输模式为二进制,避免MD5值不同或.tar.gz压缩包格式错误cd $dirget "$file"EOF
2、连续输入5个100以内的数字,统计和、最小和最大
#!/bin/bashCOUNT=1SUM=0MIN=0MAX=100while [ $COUNT -le 5 ]; do read -p "请输入1-10个整数:" INT if [[ ! $INT =~ ^[0-9]+$ ]]; then echo "输入必须是整数!" exit 1 elif [[ $INT -gt 100 ]]; then echo "输入必须是100以内!" exit 1 fi SUM=$(($SUM+$INT)) [ $MIN -lt $INT ] && MIN=$INT [ $MAX -gt $INT ] && MAX=$INT let COUNT++doneecho "SUM: $SUM"echo "MIN: $MIN"echo "MAX: $MAX"
3、将结果分别赋值给变量
应用场景:希望将执行结果或者位置参数赋值给变量,以便后续使用。方法1:for i in $(echo "4 5 6"); do eval a$i=$idoneecho $a4 $a5 $a6方法2:将位置参数192.168.1.1{1,2}拆分为到每个变量num=0for i in $(eval echo $*);do #eval将{1,2}分解为1 2 let num+=1 eval node${num}="$i"doneecho $node1 $node2 $node3# bash a.sh 192.168.1.1{1,2}192.168.1.11 192.168.1.12方法3:arr=(4 5 6)INDEX1=$(echo ${arr[0]})INDEX2=$(echo ${arr[1]})INDEX3=$(echo ${arr[2]})
4、批量修改文件名
示例:# touch article_{1..3}.html# lsarticle_1.html article_2.html article_3.html目的:把article改为bbs方法1:for file in $(ls *html); do mv $file bbs_${file#*_} # mv $file $(echo $file |sed -r 's/.*(_.*)/bbs\1/') # mv $file $(echo $file |echo bbs_$(cut -d_ -f2)done方法2:for file in $(find . -maxdepth 1 -name "*html"); do mv $file bbs_${file#*_}done方法3:# rename article bbs *.html
5、统计当前目录中以.html结尾的文件总大
方法1:# find . -name "*.html" -exec du -k {} \; |awk '{sum+=$1}END{print sum}'方法2:for size in $(ls -l *.html |awk '{print $5}'); do sum=$(($sum+$size))doneecho $sum
6、扫描主机端口状态
#!/bin/bashHOST=$1PORT="22 25 80 8080"for PORT in $PORT; do if echo &>/dev/null > /dev/tcp/$HOST/$PORT; then echo "$PORT open" else echo "$PORT close" fidone
7、Expect实现SSH免交互执行命令
Expect是一个自动交互式应用程序的工具,如telnet,ftp,passwd等。需先安装expect软件包。方法1:EOF标准输出作为expect标准输入#!/bin/bashUSER=rootPASS=123.comIP=192.168.1.120expect set timeout 30spawn ssh $USER@$IP expect { "(yes/no)" {send "yes\r"; exp_continue} "password:" {send "$PASS\r"}}expect "$USER@*" {send "$1\r"}expect "$USER@*" {send "exit\r"}expect eofEOF方法2:#!/bin/bashUSER=rootPASS=123.comIP=192.168.1.120expect -c " spawn ssh $USER@$IP expect { \"(yes/no)\" {send \"yes\r\"; exp_continue} \"password:\" {send \"$PASS\r\"; exp_continue} \"$USER@*\" {send \"df -h\r exit\r\"; exp_continue} }"方法3:将expect脚本独立出来登录脚本:# cat login.exp#!/usr/bin/expectset ip [lindex $argv 0]set user [lindex $argv 1]set passwd [lindex $argv 2]set cmd [lindex $argv 3]if { $argc != 4 } {puts "Usage: expect login.exp ip user passwd"exit 1}set timeout 30spawn ssh $user@$ipexpect { "(yes/no)" {send "yes\r"; exp_continue} "password:" {send "$passwd\r"}}expect "$user@*" {send "$cmd\r"}expect "$user@*" {send "exit\r"}expect eof执行命令脚本:写个循环可以批量操作多台服务器#!/bin/bashHOST_INFO=user_info.txtfor ip in $(awk '{print $1}' $HOST_INFO)do user=$(awk -v I="$ip" 'I==$1{print $2}' $HOST_INFO) pass=$(awk -v I="$ip" 'I==$1{print $3}' $HOST_INFO) expect login.exp $ip $user $pass $1doneLinux主机SSH连接信息:# cat user_info.txt192.168.1.120 root 123456
8、批量修改服务器用户密码
Linux主机SSH连接信息:旧密码# cat old_pass.txt 192.168.18.217 root 123456 22192.168.18.218 root 123456 22内容格式:IP User Password PortSSH远程修改密码脚本:新密码随机生成#!/bin/bashOLD_INFO=old_pass.txtNEW_INFO=new_pass.txtfor IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); do USER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO) PASS=$(awk -v I=$IP 'I==$1{print $3}' $OLD_INFO) PORT=$(awk -v I=$IP 'I==$1{print $4}' $OLD_INFO) NEW_PASS=$(mkpasswd -l 8) # 随机密码 echo "$IP $USER $NEW_PASS $PORT" >> $NEW_INFO expect -c " spawn ssh -p$PORT $USER@$IP set timeout 2 expect { \"(yes/no)\" {send \"yes\r\";exp_continue} \"password:\" {send \"$PASS\r\";exp_continue} \"$USER@*\" {send \"echo \'$NEW_PASS\' |passwd --stdin $USER\r exit\r\";exp_continue} }"done生成新密码文件:# cat new_pass.txt 192.168.18.217 root n8wX3mU% 22192.168.18.218 root c87;ZnnL 22
9、打印乘法口诀
方法1:# awk 'BEGIN{for(n=0;n++方法2:for ((i=1;ido for ((j=1;jdo result=$(($i*$j)) echo -n "$j*$i=$result " done echodone
10、getopts工具完善脚本命令行参数
getopts是一个解析脚本选项参数的工具。命令格式:getopts optstring name [arg]初次使用你要注意这几点:脚本位置参数会与optstring中的单个字母逐个匹配,如果匹配到就赋值给name,否则赋值name为问号;optstring中单个字母是一个选项,如果字母后面加冒号,表示该选项后面带参数,参数值并会赋值给OPTARG变量;optstring中第一个是冒号,表示屏蔽系统错误(test.sh: illegal option -- h);允许把选项放一起,例如-ab下面写一个打印文件指定行的简单例子,引导你思路:#!/bin/bashwhile getopts :f:n: option; do case $option in f) FILE=$OPTARG [ ! -f $FILE ] && echo "$FILE File not exist!" && exit ;; n) sed -n "${OPTARG}p" $FILE ;; ?) echo "Usage: $0 -f -n " echo "-f, --file specified file" echo "-n, --line-number print specified line" exit 1 ;; esacdone
到此,相信大家对"生产环境中有哪些常用的shell脚本"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
方法
脚本
参数
文件
输入
变量
命令
密码
服务器
服务
常用
环境
生产
主机
位置
内容
字母
工具
格式
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
美国软件开发工作好找吗
软件开发修改记录
上海什么打车软件开发
博途怎样连接数据库
广东网络技术最发达在哪
哪个大学软件开发设计就业
深圳新能源车热管理软件开发
相关单位无配置数据库
酒店为什么用数据库管理
东西湖区国际网络安全维护怎么样
在线数据库 建模
ucsc数据库储存了什么
时序数据库 point
山西天亮了网络技术
互联网科技改变未来演讲
b战原神是什么服务器
网络安全法中文版
南昌绿风网络技术有限公司
西门子dr如何重做数据库
DNS服务器可能故障
松江区进口网络技术
通常用什么服务器
金寨县网络安全事故
崩坏学园3哪个服务器好
朝阳区网络安全应急指挥中心地址
网络安全手抄报一等奖漂亮合集
彩虹六号服务器掉线问题
mfc软件开发 外包
长沙软件开发工资待遇
网络安全周教案