实用Shell脚本整理

背景

之前做了个数据平台系统的自动部署脚本开发,期间主要使用shell脚本来实现整个系统的部署,有些印象较深的脚本语句,这边做一个整理。

脚本语句

1. 验证服务器中安装的python版本

PY_VERSION=`python3 -V 2>&1|awk '{print $2}'|awk -F '.' '{print $1}'`

2. 安装rpm格式的yum软件

rpm -ivh dos2unix-6.0.3-7.el7.x86_64.rpm

3. 执行python脚本

python3 -c 'import func_python; func_python.modifyConfigServerYaml();'

4. 重写指定字符串所在行

sed -i s#BASE_USER_PATH=.*#BASE_USER_PATH=/home/test# test.sh
注:#号换成/号也可

5. 指定文件夹所属用户和用户组(一般由root用户使用)

chown -R test:test /home/log/

6. 查找某字符串所在行并注释掉(例子中为redis)

#这个只是我使用的脚本,应该有更简洁的脚本
num=$(sed -n '/redis/=' filename)
sed -i "$num s/^/#&/" filename

7. 注释掉某字符串出现的所有行

sed -i 's/^[^#].*password*/#&/g' filename

8. 根据指定符号(例子为“:”)截取字符串(第三个/后的空格是必须的)

#esPass的格式类似于 elastic:123456
 array=(${esPass//:/ })
 esUserName=${array[0]}
 esPassword=${array[1]}

9. 远程登录服务器并切换用户执行shell命令(shell命令为执行postgresql库的sql命令),并将结果输出到指定文件

ssh -l root $serverip "su - $gpuser -c 'cd /home/$gpuser; psql -h $serverip $dbname -U $gpuser -f get_authFilePath.sql >> res.txt;'"

10. res.txt中的文件格式是数据库中select命令的结果格式,对该文件指定行的数据进行提取(第三行)

authFilePath=$(sed -n '3p' res.txt)

11. 获取指定字符串出现的所有行,根据行号,重写该行

例1:
 #$authFilePath此处表示一个路径地址,可忽略
 line1=$(grep -n "keyTab" jaas.conf | cut -d ":" -f 1)
 var=${line1// / }
 for element in $var
 do
     #去除$authFilePath自带的所有空格
     authFilePath=`echo $authFilePath | sed -e 's/^[ \t]*//g'`
     line1=$element"c keyTab=\"$authFilePath/user.keytab\""
     sed -i "$line1" jaas.conf
 done
  例2:
 line2=$(grep -n "principal" jaas.conf | cut -d ":" -f 1)
    echo $line2
 var=${line2// / }
 for element in $var
 do
     line2=$element"c principal=\"$esUserName\""
     sed -i "$line2" jaas.conf
 done
注:1.脚本中的 keyTab=\"$authFilePath/user.keytab\" 以及 principal=\"$esUserName\" 便是重写的内容
2.这个基本就是三行脚本改一行代码,当需要改的地方比较多了之后,会显得脚本很笨重。开发的时候忙着出版本,并且改的量很小。我觉得该脚本有非常大的优化空间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值