shell
文章平均质量分 61
川中胡子
一个老运维的工作和学习笔记,好记性不如烂笔头。
展开
-
python+func远程调用shell脚本执行ssh/scp之类操作失败原因分析
A主机(func主控端)远程调用执行B主机(func受控端)上的sh脚本没有问题,但如果sh脚本里面有ssh、scp之类涉及到C主机ssl鉴权的操作,则执行失败;B主机上的sh脚本直接执行没有问题。原因:通过A主机python去远程调用B主机的sh脚本,因func和应用使用了不同的用户进行安装,当执行到ssh、scp之类的操作时,访问主机的源用户发生变化,将无法通过鉴权,不能正常完成后续操作解决办...原创 2018-04-08 14:50:03 · 1223 阅读 · 0 评论 -
子shell传递变量给父shell
应用场景:子shell被父shell调用获取指定返回值,以便代码复用;实现方法很多,本质是通过中间文件或进程间通讯,实现参数值的传递;我喜欢的用法:#主shell通过get_para函数调用get_para.sh子shell,根据svc_name入参获取进程端口、启动参数、主机列表get_para(){ app_port=`sh get_para.sh $svc_name 1`...原创 2018-12-19 11:31:53 · 4313 阅读 · 0 评论 -
本地与远程主机上文件一致性对比shell脚本
需求:对比本地及远程主机上某文件夹下文件大小是否一致,可用作对比不同环境下的配置文件或程序包是否一致实现:ssh远程执行命令,获取到远程主机上的文件信息到本地文件A,ls本地文件获取到文件信息到本地文件B;然后对比A和B基础版:#!/bin/bashssh baidu@test41 "ls -l --full-time /home/baidu/update/*.jar"|awk '...原创 2019-01-04 11:26:10 · 1738 阅读 · 0 评论 -
Linux批量修改用户密码1:相同用户名,改成相同的密码
#!/bin/baship_array="192.168.2.41192.168.2.42192.168.2.43"remote_dir="/tmp"remote_cmd="/usr/sbin/chpasswd -e < ${remote_dir}/chpass.txt;rm -f ${remote_dir}/chpass.txt"usernm="testuser"...原创 2019-03-22 17:19:21 · 1087 阅读 · 0 评论 -
Linux批量修改用户密码2:相同用户名,改成随机的密码
#!/bin/baship_array="192.168.2.41192.168.2.42192.168.2.43"remote_dir="/tmp"remote_cmd="/usr/sbin/chpasswd -e < ${remote_dir}/chpass.txt;rm -f ${remote_dir}/chpass.txt"usernm="testuser"...原创 2019-03-22 18:04:27 · 543 阅读 · 0 评论 -
Linux批量修改用户密码3:不同主机、不同用户,改成随机的密码
主机列表文件hosts.txt示例,注意分隔符与脚本中的一致,本文选择分号“;”192.168.2.41;userA192.168.2.42;userA192.168.2.43;userA192.168.2.43;userB脚本内容:#!/bin/bashremote_dir="/tmp"remote_cmd="/usr/sbin/chpasswd -e ...原创 2019-03-26 17:55:17 · 968 阅读 · 0 评论 -
Linux批量修改用户密码4:root口令加密、不同主机、不同用户,改成随机的密码
本文中涉及到主机口令加解密处理,相关脚本参考我的另外一篇文章:https://blog.csdn.net/qq_40809549/article/details/85095691主机列表文件hosts.txt格式:ip;username;root's password,此处的root口令为加密处理后的密文,运行脚本时需要输入加密处理时所用的密钥。示例:192.168.2.41;userA;...原创 2019-03-27 11:14:08 · 704 阅读 · 0 评论 -
不使用chroot创建高度受限用户
基于chroot方式创建的受限用户,如果需要访问原系统的文件,需要使用mount的方式挂载原系统目录或文件;而针对chroot的相关配置,如mount、umount或者删除等操作,如果操作不当,可能导致原系统重启失败,基于此方面的考虑,我想了如下一种解决方案:创建一个普通用户logger,只允许该用户访问部分应用日志,可使用命令和可访问目录高度受限,具体实现步骤如下:1、创建一...原创 2019-04-10 11:42:02 · 277 阅读 · 0 评论 -
Linux主机被入侵系列2:Linux Redis自动化挖矿感染蠕虫过程及修复
整个入侵流程大概是包含以下几个环节: 扫描开放6379端口的Linux服务器(后续感染扫描网段为1.0.0.0/16到224.255.0.0/16) 通过redis-cli尝试连接Redis并执行预置在.dat文件里的利用命令将Redis的数据文件修改为/var/spool/cron/root,然后通过在Redis中插入数据,将下载执行脚本的动作写入crontab任务 通...转载 2019-04-03 10:50:49 · 1083 阅读 · 0 评论 -
sed、grep等日志分析利器
需求示例:输出日志文件中某一时间段的日志,比如过去某天或某几天的日志,可以日期开始、结束时间作为关键字,获取两者中间的那段日志。输出文件内容中指定两个关键字之间的内容sed -n '1,/AAA/!p' filename |sed -n '1,/BBB/p'输出文件filename内容中从关键字AAA到BBB之间的内容,可用于获取日志文件中两个时间段之间的文件内容-n 按行输出,与p结合...原创 2018-12-20 11:33:35 · 274 阅读 · 0 评论 -
shell批量作业时主机用户及密码的加解密处理
一般传统的批量作业(比如批量巡检、批量修改、批量配置、批量部署等)采取的是SSH证书免密登录、账号密码交互登录,第三方组件(如python的saltstack、func主受控端模式)等方式实现对远程主机的访问与控制,一旦密码文件泄露或主控主机(主控端)被攻破,则相关主机相当于完全开放,系统将面临极大的危险。所要解决的技术问题:解决批量作业过程中,作业主机列表文件密码安全性问...原创 2018-12-19 14:22:46 · 509 阅读 · 0 评论 -
利用shell防止暴力破解,封掉多次访问失败的IP地址
思路是查找/var/log/secure中验证失败且出现的次数较多的ip,对其进行封IP处理。具体方法如下:vi /usr/local/bin/secure.sh#输入以下脚本#! /bin/bashcat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/loca...原创 2018-04-04 10:42:57 · 1173 阅读 · 0 评论 -
linux实时记录用户操作
感谢:https://www.linuxidc.com/Linux/2016-10/136598.htm方法一 下述追加到/etc/profileexport HISTFILESIZE=10000000export HISTSIZE=1000000USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` e...原创 2018-05-18 11:40:55 · 2291 阅读 · 0 评论 -
shell的并发处理
1、使用linux管道文件特性制作队列,控制线程数目;2、将脚本命令转移到后台执行 直接上干货,参考脚本:#!/bin/bashstart_time=`date +%s` #定义脚本运行的开始时间[ -e /tmp/fd1 ] || mkfifo /tmp/fd1 #创建有名管道exec 3<>/tmp/fd1 #...原创 2018-06-11 11:00:18 · 2267 阅读 · 0 评论 -
隐藏shell提示输入的内容
不显示输入内容:read -s升级版:将输入显示为星号x=0 while : ;do char=` stty cbreak -echo dd if=/dev/tty bs=1 count=1 2>/dev/null stty -cbreak echo ` if [ "$char" = "" ];then ...原创 2018-06-21 11:17:08 · 1395 阅读 · 0 评论 -
shell访问远程主机方法
1、传统ssh公私密钥授信,免密登录; 网上文档一堆,不罗嗦了2、expect交互登录#!/bin/expect set timeout 30 spawn ssh -l jikuan.zjk 10.125.25.189 expect "password:" send "zjk123\r" interact 注意:expect跟bash类似,使用时要先登录到expect,所以首行要...原创 2018-06-20 16:33:14 · 6503 阅读 · 0 评论 -
grep与正则表达式
温习一下grep和正则表达式grep [-acinv][--color=auto] 'abc' filename-a 将binary文件以text文件方式搜寻数据-c 计算找到‘abc’的次数-i 忽略大小写-n 输出行号-v 反向选择--color=auto 找到的关键字部分加颜色显示文件内容查找grep 'abc' * 搜索当前目录下带‘abc’行的文件grep -r 'abc' * 搜索当前...原创 2018-07-10 16:15:23 · 713 阅读 · 0 评论 -
MySQL主从同步状态监控脚本及邮件通知
网络版本#!/bin/bashmysql_cmd="mysql -u root -pxxxxxxxxx"errorno=(1158 1159 1008 1007 1062)while truedoarray=($($mysql_cmd -e "show slave status\G"|egrep '_Running|Behind_Master|Last_SQL_Errno'...原创 2018-07-31 16:17:54 · 1059 阅读 · 0 评论 -
MySQL的逻辑备份mysqldump及自动化备份脚本
连接参数-u-p-S --socket-h --host-P --port--database备份示例:mysqldump -uabc -p'43df.com' -S /xxxx/3306/mysql.sock --databases db_a db_b >/.../xx.sql上述示例简单有效,但锁库锁表,避免用于生产环境可输出为定界格式文件,相关参...原创 2018-08-14 14:11:34 · 1808 阅读 · 0 评论 -
确保无丢失日志文件备份方案
目标:日志不丢失空间可回收应用无感知(无需触发应用重载日志) 方案:logrotate滚动日志shell、python脚本split大文件切分处理 但不管哪种处理方式,在不触发应用重载日志的情况下(很多应用也不支持或不方便重载日志),基本都会先用copy/split对文件进行备份或切分处理,然后利用truncate/>对日志文件进行截断清空操作,而在这...原创 2018-08-29 09:47:16 · 1010 阅读 · 0 评论 -
linux下的几种文本去重方法
1、传统方法:cat xx | sort | uniq 优点:简单直接 缺点:顺序乱了 2、awk命令去重输出:awk '!x[$0]++' filename 应用扩展1:cat Afile Bfile|awk '!x[$0]++' >Cfile 依次输出A、B两个文件内容,去掉B中与A重复的行,输出到C;多应用于日志拼接。灵活扩展2:cat Afile|...原创 2018-09-10 16:38:02 · 22747 阅读 · 1 评论 -
jenkins+gulp+maven实现前后端一键打包+部署
需求:前后端在一个应用包,前端基于node、使用gulp打包,后端使用maven打包;配置jenkins实现一键从svn拉取代码、打前端、封装后端、部署。1、jenkins配置jenkins的安装、配置,网上有很多相关指导,也不是本文的重点,飘过。因为前端包部分需要在jenkins工作空间里面处理,所以我是使用linux主机自建jenkins环境,docker部署的jenkins...原创 2019-05-28 17:26:44 · 1054 阅读 · 0 评论