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.rpm3. 执行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/^/#&/" filename7. 注释掉某字符串出现的所有行
sed -i 's/^[^#].*password*/#&/g' filename8. 根据指定符号(例子为“:”)截取字符串(第三个/后的空格是必须的)
#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.这个基本就是三行脚本改一行代码,当需要改的地方比较多了之后,会显得脚本很笨重。开发的时候忙着出版本,并且改的量很小。我觉得该脚本有非常大的优化空间
以上脚本均是之前开发项目功能时实际用到的脚本语句,觉得还挺实用的,便在这里记录一下。由于本人并没有系统学过脚本语言,所以有些功能的实现脚本写的很一般,以后有机会再优化吧。



