Linux实用命令(sed,tcpdump,mkpasswd等)
1、mkpasswd自动生成随机密码(如没有些命令请yum -y install expect安装)
常用的选项
-l 指定字符的总数
-d 指定数字的个数
-c 指定小写字符个数
-C 指定大写字符个数
-s 指定特殊字符个数
usage: mkpasswd [args] [user]
where arguments are:
-l #(length of password, default = 7)
指定密码的长度,默认是7位数
-d #(min # of digits, default = 2)
指定密码中数字最少位数,默认是2位
-c #(min # of lowercase chars, default = 2)
指定密码中小写字母最少位数,默认是2位
-C #(min # of uppercase chars, default = 2)
指定密码中大写字母最少位数,默认是2位
-s #(min # of special chars, default = 1)
指定密码中特殊字符最少位数,默认是1位
-v (verbose, show passwd interaction)
这个参数在实验的时候报错,具体不知道
2、tcpdump命令
tcpdump -nn -i eth0 src host 10.10.80.254 and dst 10.10.80.52 and dst port 22
tcpdump -nn -i eth0 src host 10.10.80.254 and src portrange 10-80 and dst 10.10.80.52 and dst port 22
tcpdump tcp -i eth0 and src host 10.10.80.254 and src portrange 10-80 and dst 10.10.80.52 and dst port 22 -nn -vv
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
(9)-e 列出链路层头部,查看mac(tcpdump icmp -i eth0 and host 10.47.39.15 -e)
在表达式中一般如下几种类型的关键字:
第一种是关于类型的关键字,主要包括host,net,port,例如 host 210.27.48.2, 指明 一台主机,net 192.168.1.0/24指明网络,port 23 指明端口号23。如果没有指定类型,缺省的类型是host。
第二种是确定传输方向的关键字,主要包括src,dst,src port, dst port,src portrange 40000-60000,如果没有指明 方向关键字,则缺省是src or dst关键字。
第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI (分布式光纤数据接口网络)上的特定的网络协议,实际上它是”ether”的别名,fddi和ether 具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。如果没有指定任何协议,则tcpdump 将会 监听所有协议的信息包。
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less, greater, 还有三种逻辑运算,取非运算是`not ',`!`;与运算是`and`,`&&';或运算是`or`,`||`
3、安装Tab增强版:bash-completion,可补全命令参数;
因为CentOS官方源并不带有bash-completion的包,所以,为了可用yum安装,增加epel的源,
首先,使用wget下载epel的rpm包,使用rpm指令安装,之后运行yum安装,代码如下:
[adam@ultraera ~]$ wget http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm
[adam@ultraera ~]$ sudo rpm -ivh epel-release-6-8.noarch.rpm
[adam@ultraera ~]$ sudo yum clean all
[adam@ultraera ~]$ sudo yum makecache
[adam@ultraera ~]$ sudo yum install -y bash-completion
安装完成之后,注销终端,重新登录即可。
apt-get install bash-completion
4、在sed中引入shell变量的方法
1.eval sed 's/$a/$b/' filename
2.sed "s/$a/$b/" filename
3.sed 's/'$a'/'$b'/' filename
4.sed s/$a/$b/ filename
5、awk中引入shell变量方法为:""$1""
sed -n "/^$1:/p" /etc/passwd|awk -F ":" '{print ""$1"""的UID为:"$3" """$1"""的shell环境:"$NF}'
6、查看进程ps -ef和ps aux
ps -ef 是用标准的格式显示进程的、其格式如下
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Aug01 ? 00:00:01 /sbin/init
UID #用户ID、但输出的是用户名
PID #进程的ID
PPID #父进程ID
C #进程占用CPU的百分比
STIME #进程启动到现在的时间
TTY #该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
CMD #命令的名称和参数
ps aux 是用BSD的格式来显示、其格式如下
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 19348 1384 ? Ss Aug01 0:01 /sbin/init
USER #用户名
%CPU #进程占用的CPU百分比
%MEM #占用内存的百分比
VSZ #该进程使用的虚拟內存量(KB)
RSS #该进程占用的固定內存量(KB)(驻留中页的数量)
STAT #进程的状态
START #该进程被触发启动时间
TIME #该进程实际使用CPU运行的时间
STAT状态位常见的状态字符有:
D #无法中断的休眠状态(通常 IO 的进程);
R #正在运行可中在队列中可过行的;
S #处于休眠状态;
T #停止或被追踪;
W #进入内存交换 (从内核2.6开始无效);
X #死掉的进程 (基本很少见);
Z #僵尸进程;
< #优先级高的进程
N #优先级较低的进程
L #有些页被锁进内存;
s #进程的领导者(在它之下有子进程);
l #多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ #位于后台的进程组;
7、添加多个loopback口(设置网卡别名)
[root@CentOS ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:1
[root@CentOS ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:1
DEVICE=lo:1
IPADDR=192.168.100.1
NETMASK=255.255.255.0
NETWORK=192.168.100.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=192.168.100.255
ONBOOT=yes
NAME=loopback1
8、SCP的使用方法及参数
命令参数:
-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 保留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
第1个指定了用户名,命令执行后需要输入用户密码; scp local_file remote_username@remote_ip:remote_folder
第2个没有指定用户名,命令执行后需要输入用户名和密码;scp local_folder remote_ip:remote_folder
例:scp -r root@43.224.34.73:/home/lk /root