linux
文章平均质量分 60
川中胡子
一个老运维的工作和学习笔记,好记性不如烂笔头。
展开
-
CentOS7下nagios+pagerduty的yum安装与应用
1、nagios的优势1)部署和配置最便捷2)完善的基础服务监控,直接有效2、nagios的两种核心工作模式远程直连采集:IP(ping)、端口(telnet)、URL(curl -I)桥接间接采集:CPU、内存、磁盘、进程扩展功能:NRPE组件,NRPE在客户端上先收集相关信息,然后nagios服务器上的NRPE连接客户端NRPE获取监控数据3、CentO...原创 2019-06-06 11:38:13 · 849 阅读 · 0 评论 -
使用chroot创建高度受限ssh用户
需求:需要一个高度受限ssh用户,只允许其通过ssh登陆、访问指定目录、使用指定命令,以增强系统安全性。应用场景:日志用户、运营用户;环境:CentOS 6.5操作步骤:1、新增用户、配置目录、复制关键文件useradd loggerpasswd loggermkdir -p /chroot/{etc,dev,proc,lib,bin,lib64,home,usr...原创 2019-03-01 17:21:18 · 906 阅读 · 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 · 1757 阅读 · 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 · 4339 阅读 · 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 · 287 阅读 · 0 评论 -
shell批量作业时主机用户及密码的加解密处理
一般传统的批量作业(比如批量巡检、批量修改、批量配置、批量部署等)采取的是SSH证书免密登录、账号密码交互登录,第三方组件(如python的saltstack、func主受控端模式)等方式实现对远程主机的访问与控制,一旦密码文件泄露或主控主机(主控端)被攻破,则相关主机相当于完全开放,系统将面临极大的危险。所要解决的技术问题:解决批量作业过程中,作业主机列表文件密码安全性问...原创 2018-12-19 14:22:46 · 520 阅读 · 0 评论 -
一个特别的权限管理工具:setfacl
setfacl:一个特别的文件和目录权限控制工具,作为linux用户、组权限管理之外的权限管理补充;配置后,文件属性增加一个加号“+”,作为提示。参考:https://www.cnblogs.com/MLibra/p/6240209.html示例:setfacl -m user:john:rw- ./test.txtsetfacl -m group:dev:r-- ./test.t...转载 2018-10-24 10:21:34 · 803 阅读 · 0 评论 -
利用Charles和tcpdump抓取终端与服务器之间的数据包
需求:分析手机与服务器间数据交互情况,分别在服务器和手机端抓取数据解决:第一步、手机终端数据包抓取使用工具:Charles,配置代理端口前提:手机接入wifi和Charles运行的主机在同一个局域网手机配置:修改手机wifi配置,设置代理,代理ip为运行Charles的主机ip,端口为Charles配置的端口测试:用手机随便访问下互联网,Charles应该可以抓取相应的数据...原创 2018-10-23 15:46:10 · 5593 阅读 · 0 评论 -
linux的sudo配置及用户组管理命令回顾
问题:某些场景下,需要修改一些root权限的配置文件,然后执行一些root权限的命令,不想老是使用root账号;解决方案: 第一步:将配置文件归到一个特殊的组,如confgp,对组成员开放写权限,同时在userA的附加组里面加上confgp; 这一步也可以使用setfacl工具来进行权限控制,参考:https://blog.csdn.net/qq_408095...原创 2018-10-22 10:07:41 · 1343 阅读 · 0 评论 -
xshell远程SSH访问主机连接缓慢问题处理:xauth: “timeout in locking authority file /home/<user>/.Xauthority”
问题:ssh到某台主机上,连接建立缓慢,并且会报如下错误:/usr/bin/xauth: timeout in locking authority file /home/sam/.Xauthority 方法1:原因userA对/home/userA目录没有写权限,解决 chown userA:userA -R /home/userA 实测解决。 其他方法1:删除用户默认...原创 2018-10-22 09:39:11 · 13795 阅读 · 5 评论 -
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 · 1103 阅读 · 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 · 557 阅读 · 0 评论 -
jenkins+gulp+maven实现前后端一键打包+部署
需求:前后端在一个应用包,前端基于node、使用gulp打包,后端使用maven打包;配置jenkins实现一键从svn拉取代码、打前端、封装后端、部署。1、jenkins配置jenkins的安装、配置,网上有很多相关指导,也不是本文的重点,飘过。因为前端包部分需要在jenkins工作空间里面处理,所以我是使用linux主机自建jenkins环境,docker部署的jenkins...原创 2019-05-28 17:26:44 · 1065 阅读 · 0 评论 -
MySQL主主集群节点迁移方案
需求:A、B节点为mysql主主集群,现在需要接入C节点,与B形成主主,A节点降级为B的从节点。规划:1、完成B到C的主从配置;2、停掉A的业务接入(或将流量暂时切换到B),即停止A的写入,关闭A到B的主从,AB节点降级为单纯的B到A的主从;3、完成C到B的主从配置,实现B、C的主主配置;4、将原来A的流量切换到C;实践:1、搭建A、B主主集群;2、写个shell,...原创 2019-05-26 11:14:10 · 574 阅读 · 0 评论 -
Linux主机被入侵系列4:入侵恢复
主机被入侵后要怎么处理?第0步当然是断网了。1、root口令被修改:重置root口令,主要操作步骤:1)重启centos,启动过程中长按ESC,进入GNU2)选择系统,按E3)选择kernel,按E4)rhgb quiet 后面空格,输入1或single,回车5)按B启动系统6)输入passwd root重设root口令,直到显示“all authentica...原创 2019-04-03 17:09:02 · 530 阅读 · 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 · 1091 阅读 · 0 评论 -
不使用chroot创建高度受限用户
基于chroot方式创建的受限用户,如果需要访问原系统的文件,需要使用mount的方式挂载原系统目录或文件;而针对chroot的相关配置,如mount、umount或者删除等操作,如果操作不当,可能导致原系统重启失败,基于此方面的考虑,我想了如下一种解决方案:创建一个普通用户logger,只允许该用户访问部分应用日志,可使用命令和可访问目录高度受限,具体实现步骤如下:1、创建一...原创 2019-04-10 11:42:02 · 284 阅读 · 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 · 723 阅读 · 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 · 979 阅读 · 0 评论 -
linux普通用户修改root文件
今天发现一个现象,有点不合逻辑,查了一下网上,也没有相关资料,记录一下!现象:普通用户userA可以修改、删除root用户的目录和文件。分析:1、如果在userA有写权限的目录下,创建root的目录或文件,目录权限755,文件权限644:目录:userA可以删除;文件:userA可以强制编辑,编辑后文件所有者变成userA2、如果在userA没有写权限的目录下,创建root...原创 2018-10-10 16:48:32 · 5074 阅读 · 0 评论 -
MySQL+Maxwell+Kafka+ES+kibana实现MySQL日志分析
MySQL+Maxwell+Kafka+ES+kibana实现MySQL日志分析参考:https://blog.csdn.net/qq_30921461/article/details/78320750http://blog.sina.com.cn/s/blog_628cc2b70102xeha.htmlhttps://www.jianshu.com/p/afc4dcc9ffb6...原创 2018-09-13 15:48:04 · 4606 阅读 · 2 评论 -
一次支持write+stream的nginx编译安装过程
准备安装的模块./configure --prefix=/usr/local/nginx --with-http_v2_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream...原创 2018-06-14 16:54:24 · 932 阅读 · 1 评论 -
关于Linux环境下应用生成图片中出现乱码的问题处理
缘由:测试环境和生产环境系统字符集都是LANG=en_US.utf8,程序在测试环境通过下述方式生成的图片里面的中文可以正常显示,生产环境不行,排查原因为生产环境缺少对应的字体,采取后续方法增加字体。1、C:\Windows\Fonts下找到字体文件simsun.ttc,重命名为simsun.ttf;2、上传到主机/usr/share/fonts/zh_CN/3、修改文...原创 2018-05-31 14:29:47 · 2615 阅读 · 0 评论 -
node.js的安装与部署
1、下载node下载:https://nodejs.org/en/download/为省事,直接下载二进制包,放到主机上,解压到/home/node;2、配置vi /etc/profile 加入export NODE_HOME=/home/nodeexport PATH=$NODE_HOME/bin:$PATHsource /etc/profile 使之生效3、验证执行node -v 返回v8...原创 2018-05-24 14:55:01 · 1688 阅读 · 0 评论 -
VMware Linux虚拟主机双路由的一种配置方式
大体网络拓扑如图:VM物理机单网卡,IP192.168.1.2,VM虚拟机IP192.168.1.3,默认网关192.168.1.1;因业务需要,需经常往公有云主机(假设IP为222.172.200.68)上传文件;因192段外联为10M专线,带宽较小,172段外联为500M光宽带,50M上行,比192段的上行要大,在不改变默认路由的情况下,指定目标主机222.172.200.68...原创 2018-05-24 10:37:17 · 1612 阅读 · 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 · 2290 阅读 · 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 · 2309 阅读 · 0 评论 -
centos环境python3.6下bpython的安装
centos环境python3.6下bpython的安装注意:python3.6下通过python get-pip.py安装的pip可执行文件名为pip3pip3 install bpython......Successfully installed blessings-1.6.1 bpython-0.17.1 certifi-2018.1.18 chardet-3.0.4 curtsies-0....原创 2018-04-12 14:46:20 · 1464 阅读 · 0 评论 -
python从2.6升级到3.6后安装pip报错SSL模块不存在
python从2.6升级到3.6后安装pip报错SSL模块不存在python get-pip.py 报错:pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.解决办法:网上介绍的一种办法,对3.6.5版本而言,无此参数,无效./configu...原创 2018-04-11 19:20:05 · 1807 阅读 · 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 · 1198 阅读 · 0 评论 -
使用FastDFS搭建图片服务器(单实例)-报错处理
原文地址:https://blog.csdn.net/u010098331/article/details/51646921报错1:/make.sh: line 14: gcc: command not found解决:yum install gcc 报错2:可能启动报错,storage/logs下log报错:No route to host,但却可以ping通tracker解决:目标主机上执行...原创 2018-04-04 09:59:13 · 347 阅读 · 0 评论 -
Linux配置root登陆时发送邮件到指定邮箱
出于安全考虑,需要监控部分敏感主机的root账号访问情况,于是实现root登录时发送邮件到指定邮箱。提前明确:发件箱、发件箱授权码、发件箱smtp地址、收件箱 第一步 申请邮箱授权码选择腾讯企业邮箱,登录发件箱账号后,绑定微信,启用安全登录,选择“客户端专用密码-生成新密码”,此即授权码。参考:https://www.yiyisoft.com/news/402.html...原创 2018-06-09 15:23:25 · 10763 阅读 · 1 评论 -
ulimit: file size: cannot modify limit: Operation not permitted 修改ulimit -f 时报错
ulimit -f 2048000 执行报错报错原因:设定值超过系统当前设定值;当前设定值查看:ulimit -a 查看输出中 -f的对应值file size (blocks, -f) 调整方法:修改配置文件/etc/security/limits.conf* - fsize 2049000用户重新进入后生效;之前因为该参数过小导致写入中断的文件(比如日志文件),...原创 2018-06-29 11:13:11 · 4813 阅读 · 0 评论 -
Linux相关的加解密vim、shc、base64、openssl
文件加解密最简单:VIM 直接加解密加密 :X 回车,输入密码解密 :X 回程,输入空密码有个麻烦的地方:加密后的文件没法被shell读取,尚未尝试是否有什么好的解决办法sh脚本加密:推荐使用shc字符串加密:base64,感觉不靠谱,拿着密文就能直接解密加密:echo "abc" |/usr/bin/base64 -i解密:echo "YWJjCg=="|/usr/bin/bas...原创 2018-06-20 10:11:29 · 374 阅读 · 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 · 22839 阅读 · 1 评论 -
错误修改limits.conf引起could not open session错误的故障修复
配置limits.conf时,原计划配置:* soft nofile 65536* hard nofile 131072* soft nproc 2048* hard nproc 4096手闲,在每个后面都加了一个0,然后.......就各种进不去了,报错“could not open session”因为是虚拟机,参考下述文章中的办法二,成功解决,抄录一下。https://...转载 2018-09-12 11:27:11 · 3324 阅读 · 0 评论 -
确保无丢失日志文件备份方案
目标:日志不丢失空间可回收应用无感知(无需触发应用重载日志) 方案:logrotate滚动日志shell、python脚本split大文件切分处理 但不管哪种处理方式,在不触发应用重载日志的情况下(很多应用也不支持或不方便重载日志),基本都会先用copy/split对文件进行备份或切分处理,然后利用truncate/>对日志文件进行截断清空操作,而在这...原创 2018-08-29 09:47:16 · 1023 阅读 · 0 评论 -
tmpwatch对/tmp下文件及目录的清理管理
缘由: 应用上传图片是报错,F12显示报错信息为/tmp/xxx/xxxx/xxx目录不可用; 图片上传服务为FastDFS,检查FastDFS服务,正常可用; 查找对应主机上临时目录,发现/tmp/xxx/xxxx/xxx目录丢失,分析原因应该为tmp目录下的文件被tmpwatch定时进程清理。 临时解决方案:建立对应目录/tmp/xxx/xxxx/xxx,...原创 2018-08-13 11:22:52 · 1147 阅读 · 0 评论 -
MySQL数据库的文件结构
1、初始化选项文件(配置文件)可以启动的时候指定,更多的时候选择默认查询,windows查找顺序略,Linux查找顺序:/etc/my.cnf/etc/mysql/my.cnf/SYSCONFDIR/my.cnf 通过CMake源码编译时指定的SYSCONFDIR参数指定$MYSQL_HOME/my.cnf~/.my.cnf其他目录下时,通过参数defaults-fil...原创 2018-08-02 10:17:13 · 3122 阅读 · 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 · 1823 阅读 · 0 评论