shell:
shell第一行为#!/bin/bash
或#!/bin/sh
如果想要打印shell脚本中的每条命令的执行情况可以这样写,其中-x是用来调试用的:
#!/bin/sh -x
\r,\n与\r\n区别:
Unix换行:\n (0x0A)
MAC回车:\r (0x0D)
Win回车换行:\r\n (0x0D,0x0A)
抓包:
第一种是关于类型的关键字,主要包括host,net,port。例如 :
host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,
port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.
第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明:
src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 ,
dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。
如果没有指明方向关键字,则缺省是src or dst关键字。
第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&;或运算 是'or' ,'||';这些关键字可以组合起来构成强大的组合条件来满足人们的需要。
常用选项:
选项 | 用途 |
---|---|
-i |
指定接口名称,any 任意接口,可以认为是任意网卡。<br />如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0。 |
-s |
指定抓包的大小,0表示不限制大小 |
-w |
表示抓的包写到指定路径 |
-v
|
输出详细的报文信息,或者-vv
|
示例:
#抓取任意网卡的包,包大小不限,端口为8085,抓包文件保存在/tmp/test001.pcap中
tcpdump -i any -s 0 port 8085 -v -w /tmp/test001.pcap
#截获所有210.27.48.1 的主机收到的和发出的所有的数据包
tcpdump host 210.27.48.1
#抓取主机172.16.119.145收到的和发出的所有的数据包
tcpdump -i any -s 0 host 172.16.119.145 -v -w /tmp/test001.pcap
#到端口28703 的数据
tcpdump dst port 28703 -v -w /tmp/test001.pcap
#监视所有送到主机hostname的数据包
tcpdump -i eth0 dst host hostname
tcpdump -iany -s0 -v host 10.67.76.5 or port 8080 -w test.pcap
ldd:
ldd可以列出一个程序所需要得动态链接库(so),如果运行可执行文件时,提示没有找到动态库:
[root@localhost prj_linux]# ./ipdt
./ipdt: error while loading shared libraries: libosp.so: cannot open shared object file: No such file or directory
可以使用ldd查看:
root@localhost prj_linux]# ldd ipdt
linux-vdso.so.1 => (0x00007ffec42a2000)
libosp.so => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f45ef4e6000)
libz.so.1 => /lib64/libz.so.1 (0x00007f45ef2d0000)
librt.so.1 => /lib64/librt.so.1 (0x00007f45ef0c8000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f45eeec3000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f45eebbc000)
libm.so.6 => /lib64/libm.so.6 (0x00007f45ee8ba000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f45ee6a3000)
libc.so.6 => /lib64/libc.so.6 (0x00007f45ee2d6000)
其中“=>”左边的表示该程序需要连接的共享库之 so 名称。
右边表示由 Linux 的共享库系统找到的对应的共享库在文件系统中的具体位置。
可以使用LD_LIBRARY_PATH
设置动态库的查找路径:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
这种export方式,在终端退出后,配置就会消失,想一直保持配置,见下文。
设置环境变量:
发现linux 配置环境变量后 ,关闭终端,失效问题,其实是配置的地方有误,把要配置的环境变量放进~/.bashrc
中 :
cd /etc
vim ~/.bashrc
export PATH=$PATH:/home/landv/go/bin
source ~/.bashrc
把直接在~/.bashrc
中添加
source /etc/profile