Press "Enter" to skip to content

Category: Linux运维

Linux,unix,mysql,database,oracle,mysql

Linux get DevName of a directory

Linux系统下, 获得某一个子目录(例如/data/home/release )对应的DevName(如sdb等). 现在的情况是

有些机器是这样的

Filesystem      Size  Used Avail Use% Mounted on
......
/dev/sda5       1.6T  343G  1.2T  23% /data

而有些机器是这样的

Filesystem      Size  Used Avail Use% Mounted on
......
/dev/sda5       1.6T  343G  1.2T  23% /data
/dev/sdb        488M   56M  408M  12% /data/home/release

解决办法

part=`df -P /data/home/release | awk 'END{print $1}'`    #得到一个诸如/dev/sda3的字符串
devname=${part:5:3}             #切割上面的字符串,从第5位开始,取3位
echo $devname
1 Comment

在OpenWrt/LEDE系统中处理JSON

在OpenWrt/LEDE系统中处理JSON的方法,这里记录一下。

假设有一个JSON文件

cat /etc/ss.json 
{
	"server": "8.8.8.8",
	"server_port": 443,
	"local_address": "0.0.0.0",
	"local_port": 7070,
	"password": "fuckgfang",
	"method": "aes_128_ctr",
	"timeout": "60",
	"protocol": "auth_aes128_sha1",
	"fast_open": false
}

处理方式1

$ jsonfilter -i /etc/ss.json -e "@.server"
8.8.8.8

$ CONF=/etc/ss.json
$ a=$(jsonfilter -i $CONF -e "@.server")
$ echo $a
8.8.8.8
1 Comment

阿里云/京东云等进行端口转发

假设我们有个应用建立在国外的某个服务器上(如8.8.8.8:443端口上),现在希望使用阿里云/京东云等作为跳板来转发一下这个端口

开启端口转发

vim /etc/sysctl.conf
将 net.ipv4.ip_forward=0
修改成 net.ipv4.ip_forward=1

编辑后使用命令让配置马上生效
sysctl -p

相同端口的转发(将阿里云的443端口转发到8.8.8.8的443端口)

iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 8.8.8.8
iptables -t nat -A PREROUTING -p udp --dport 443 -j DNAT --to-destination 8.8.8.8

iptables -t nat -A POSTROUTING -p udp -d 8.8.8.8 --dport 443 -j SNAT --to-source 192.168.0.3
iptables -t nat -A POSTROUTING -p tcp -d 8.8.8.8 --dport 443 -j SNAT --to-source 192.168.0.3

请注意:一般来说,阿里云/京东云有个内网IP和公网IP,我们假设这里的192.168.0.3是阿里云/京东云的内网IP,这里不能写公网IP

不同端口的转发(将阿里云的5270端口转发到8.8.8.8的443端口)

iptables -t nat -A PREROUTING -p udp --dport 5270 -j DNAT --to-destination 8.8.8.8:443
iptables -t nat -A PREROUTING -p udp --dport 5270 -j DNAT --to-destination 8.8.8.8:443

iptables -t nat -A POSTROUTING -p udp -d 8.8.8.8 --dport 443 -j SNAT --to-source 192.168.0.3
iptables -t nat -A POSTROUTING -p tcp -d 8.8.8.8 --dport 443 -j SNAT --to-source 192.168.0.3
1 Comment

运维实例:批量统计分区占用情况,并形成Excel报表

假设有一天,你有一个任务,要统计线上所有服务器的/export分区占用情况,比如下面这一台服务器:

$ df -hT
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda1      ext4    20G  5.2G   13G  29% /
tmpfs          tmpfs  127G     0  127G   0% /dev/shm
/dev/sda3      ext4   514G  279G  209G  58% /export
/dev/sdb1      ext4   1.1T  518G  526G  50% /export/Data/jd_search

像这样一台服务器,除了有个/export分区,还有个/export/Data/jd_search(只有一部分机器有这个分区),现在要统计这2个分区的占用情况,并且最终形成Excel报表,要怎么操作呢?

1,使用批量脚本获得所有机器的/export分区占用情况
#准备远程机器列表

$ vim ip_list
10.191.172.201
10.190.143.38
10.187.110.4
10.190.49.237
10.190.198.192
10.190.163.211

使用ansible将本机的(admin用户的)key推送到所有机器上(的admin用户),实现从本机免密码登陆到所有机器

$ vim deploy_ssh_key.yml   #准备push ssh-key
- hosts: all
  remote_user: admin
  gather_facts: no

  tasks:
  - name: install ssh key
    authorized_key: user=admin
                    key="{{ lookup('file', '/home/admin/.ssh/id_rsa.pub') }}" 
                    state=present
Leave a Comment

为Nginx添加basic_auth

为Nginx添加basic_auth,意思就是访问页面的时候需要弹出来一个用户和密码验证的东西,本文基于CentOS 6

1, 安装密码生成工具htpasswd并生成用户密码文件

yum install httpd-tools               #适用centos
sudo apt-get install apache2-utils    #适用ubuntu

生成用户密码文件

$ htpasswd -c /var/www/html/.htpasswd user1  #回车会要求输入两遍密码,会清除所有用户!
$ htpasswd -bc /var/www/html/.htpasswd user1 password  #不用回车,直接指定user1的密码为password
$ htpasswd -b /var/www/html/.htpasswd user2 password   #添加一个用户,如果用户已存在,则是修改密码
$ htpasswd -D /var/www/html/.htpasswd user2  #删除用户

2, 为Nginx添加basic_auth配置

server {
	listen		80;
#	root		/tmp;
#	index		index.html index.htm;
	server_name	zhukun.net www.zhukun.net;

	location / {
		auth_basic		"input you user name and password";
		auth_basic_user_file	/export/servers/.htpasswd;
		proxy_pass http://127.0.0.1:9000;
	}
}

然后再次访问zhukun.net时便会弹出验证框要求输入用户名和密码。

Leave a Comment

Excel转换txt & 批量筛选IP & 批量扫描服务器信息

假设,有一个智障同事,发了一个Excel过来(里面含有多张表格),要求扫描里面所有的IP是否有网卡故障,比如下面这样的
Excel转换txt

先不说IP数量多少的问题,里面有多张表格,并且有多个列,每一列都有不少IP,IP呢,还有分为172开头的(物理机),和10开头的(Docker),看起来好像复杂死了。

这里说一下我的处理方式。

找一个Excel转换成JSON/TXT的工具(比如这个Excel To Formula View),转换以后的效果如下
Excel To Formula View

Leave a Comment