文章目录
本文整理http://www.opstool.com 所总结的工具
获取交换机连接的端口
对于LLDP,协议号是0x88cc。于是我们可以使用以下tcpdump命令来抓取到我们想要的信息。
tcpdump -i eth0 ether proto 0x88cc -A -s0 -t -c 1
对于使用CDP协议的交换机,一般是Cisco的交换机。可以使用下面命令。即把LLDP的协议号换成CDP的协议号0x2000
tcpdump -i eth0 ether proto 0x2000 -A -s0 -t -c 1
获取主机所有网络接口
#ip link | grep ^[0-9] | awk -F: '{print $2}'
打印文件中的某一行
sed -n 12345p filename
获取虚拟机的虚拟化技术
[root@xxx ~]$ yum install virt-what
[root@xxx ~]$ virt-what
获取端口的各个TCP链接状态
netstat -n | grep `hostname -i`:80 |awk '/^tcp/{++S[$NF]}END{for (key in S) print key,S[key]}'
抓取主板的序列号
dmidecode -s system-serial-number
同主机端口重定向
我们可能需要将访问主机的7979端口映射到8080端口。也可以iptables重定向完成
iptables -t nat -A PREROUTING -p tcp --dport 7979 -j REDIRECT --to-ports 8080
注:需要打开ip_forward功能。
echo ‘1’ > /proc/sys/net/ipv4/ip_forward
跨主机端口映射
我们想到达主机B的80端口,但是由于网络限制可能无法直接完成。但是我们可以到达主机A的8080端口,而主机A可以直接到达B的80端口。
这时候可以使用iptables,将主机B的80端口映射到主机A的8080端口,通过访问A的8080相当于访问B的80。实现如下:
在主机A上直接如下命令,实现端口映射的Full-Nat
#!/bin/bash
pro='tcp'
NAT_Host='Host_A'
NAT_Port=8080
Dst_Host='Host_B'
Dst_Port=80
iptables -t nat -A PREROUTING -m $pro -p $pro --dport $NAT_Port -j DNAT --to-destination $Dst_Host:$Dst_Port
iptables -t nat -A POSTROUTING -m $pro -p $pro --dport $Dst_Port -d $Dst_Host -j SNAT --to-source $NAT_Host
说明:
NAT_Pro表示NAT的协议,可以是tcp或udp
NAT_Host表示中间做端口映射的主机。这里也就是主机A
NAT_Port表示中间做端口映射的端口。这里也就是主机A的8080口
Dst_Host表示被NAT的主机。这里也就是主机B
Dst_Host表示被NAT的端口。这里也就是主机B的80口
防止rm命令误删根目录
在~/.bashrc增加
alias rm='rm -i --preserve-root'
alias chgrp='chgrp --preserve-root'
alias chown='chown --preserve-root'
alias chmod='chmod --preserve-root'
查询Intel CPU的详细信息
cat /proc/cpuinfo | grep 'model name'
然后去查http://ark.intel.com/m/zh-cn/search?q=E5-2420
#
软件推荐
后台执行命令-screen
screen -dmS 名字 命令
vim插件
画ascii
DrawIt
wget -O DrawIt.vba.gz http://www.vim.org/scripts/download_script.php?src_id=8798
文件配置
~/.vimrc
set is
set ic
set nu
set ts=4
set expandtab
set shiftwidth=4
set paste
filetype on
syntax on
shell技巧
如何正确判断变量,避免语法错误
[ "x$var" == "x" ]
如何获取当前shell脚本所在的文件夹路径
SHELLDIR=" ( dirname “${BASH_SOURCE[0]}” )" && pwd )"
如何快速检测base脚本的语法错误,又不用执行脚本
以下命令 并不会真正执行脚本,只会检查xx.sh的语法
bash -n xx.sh