Linux随记

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

参考文献:

  1. shell - shell脚本中的 "#!/bin/sh -x"的含义
  2. \r,\n与\r\n有什么区别
  3. linux下如何使用tcpdump进行抓包详细教程
  4. 设置LD_LIBRARY_PATH
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容