一行命令脚本

本文整理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=" ( c d " ( cd " ( dirname “${BASH_SOURCE[0]}” )" && pwd )"

如何快速检测base脚本的语法错误,又不用执行脚本

以下命令 并不会真正执行脚本,只会检查xx.sh的语法

bash -n xx.sh

猜你喜欢

转载自blog.csdn.net/juewuer/article/details/88014325