Linux(centos)操作技巧汇总----->持续更新中

来源:互联网 发布:蚌埠学院网络 编辑:程序博客网 时间:2024/05/23 23:09

技巧一:文件上传下载

方式1:

Xshell远程登录服务器,通过命令 rz 和 sz 实现单个文件的上传和下载。

shell终端输入命令:rz

若提示:-bash: rz: command not found  表示未安装

安装:yum -y install lrzsz

安装完成后测试

上传命名:rz                                             //弹出窗口选择上传文件          

下载命令:sz  filename                          //弹出窗口选择存放目录

注意:

1)文件可以直接拖拽上传,文件夹则不能;

2)命令rz上传的文件与服务器当前目录中文件同名则上传失败;

方式2:

安装xftp工具,对于目录的上传下载操作更加方便;


技巧二:tcpdump常用命令抓包

命令ifconfig查看待监听或说抓包网卡;

抓包命令1:tcpdump -i eth0 -s 0 -v -w $PATH/xxx.pcap

该命令抓取eth0网卡内所有的数据包,并存储到$PATH/xxx.pcap文件中,文件路径及名称自定义;

-i eth0        //监听指定网卡     当然也可以抓指定网口的数据包vEthx

-s 0            //抓取数据包默认长度为68字节,加上-s 0 后可以自动调整,抓取到完整的数据包

-v                //显示抓包信息,主要是抓包数量

-w               //保存pcap文件,可以用于数据包回放和wireshark查看数据包进行分析


常用的可选命令行参数包括:

1)关于类型的关键字:host    net    port     缺省值:host

host     主机地址,例如:host  201.23.36.25

net       网络地址,例如:net  202.0.0.0

port     端口,例如:port   23

2)关于传输方向的关键字:dst     src    dst or src    dst and src    缺省值:dst or src

dst net  202.0.0.0     目的网络地址为202.0.0.0

3)协议关键字:tcp   http   smtp   ftp   udp  ... ...

4)其他重要关键字:not    and   or 

5)括号的正确使用:斜杠加半括号



技巧三:nm查看动态、静态库函数

nm常用的命令为:

nm  -g  --defined-only  libxxx.a     (或者libxxx.so)

-g, --extern-only      Display only external symbols      //相当于显示所有调用的函数(包括自定义和库函数)

--defined-only     Display only defined symbols         //只显示自定义函数

上述两个可选参数根据情况使用,更复杂的查看nm  --help


技巧四:rpm安装or卸载软件包

安装:

rpm -ivh xxx.rpm

卸载:

rpm -e xxx.rpm       // --nodeps  可选项,强制删除

查询:

rpm -qa | grep xxx


技巧五:md5sum生成和校验文件md5值

用途:md5值用来检测文件传输是否完整,只需要文件传输前后的md5值一致基本就可确定文件的完整性;

该方法只针对文件内容,跟文件名没有关系,测试如下:

data.txt和dd.txt文件内容一样,生成的md5值也是一样,命令:md5sum filename



技巧六:ifconfig配置IP

命令:ifconfig -a   查看网卡及各端口

命令:ifconfig  vEthx 192.168.x.x  netmask 255.255.255.0      可以配置网卡或者特定端口的IP地址


技巧七:禁止连接或ping本地机器

命令:iptabels -A INPUT -p icmp --icmp-type 8 -j DROP

命令:iptables -A OUTPUT -p -icmp --icmp-type 0 -j DROP

上述两条命令通过iptables配置filter表的过滤规则:

-A 表示追加规则

INPUT/OUTPUT 表示规则链,分别针对接收和发出的数据包

-p icmp 指定Internet控制报文协议

--icmp-type icmp数据包类型,8表示echo-request(请求回显),0表示相应包echo-reply

-j DROP 表示匹配规则后执行动动作,常用:DROP,ACCEPT

当进行上述设置后,本地机可以ping其他机器,但是本地机不能被ping通;

删除规则方法:

命令:iptables -L INPUT --line-numbers           //带序号显示INPUT链的所有规则

命令:iptables -D INPUT 序号                             //删除指定序号规则

命令:iptables -L OUTPUT --line-numbers           //带序号显示OUTPUT链的所有规则

命令:iptables -D OUTPUT 序号                             //删除指定序号规则


技巧八:MAC地址和网口

网桥模式下通过数据包目的MAC查找数据包的输出网口(vEthx),手动实现如下:

命令:brctl showmacs brx                                   //brx表示桥,可以ifconfig查看,

该命令显示mac和port,找到目的mac对应的port,然后根据port找到对应该port号的本地mac

命令:ifconfig

显示网络配置信息,然后找到上述本地mac对应的网口好vEthx,该网口就是数据包待发出的网口。


技巧九:底层和应用层同名头文件

简单例子:底层和应用层都用到flow.h,而应用层间接调用了底层的flow.h文件,按照编程习惯很有可能

在flow.h文件中采用相同的安全卫士,底层和应用层不同的攻城狮开发:

#ifndef __FLOW_H__

#define __FLOW_H__

...

#endif

编译的时候就会出现底层flow.h定义的信息内容,在应用层就可能出现"incomplete type"类似的错误信息,

解决这类问题的方法很简单,修改下头文件安全卫士就OK啦,比如另外一个用__BOTTOM_FLOW_H__

当然有个前提,两个flow.h没有重定义内容。


技巧十:top

top -p 进程号

作用监视单独某一个进程,当然ps -A | grep XXX,查询到进程号


技巧十一:enum

枚举类型,首个成员赋值为0,末尾添加MAX成员,当申请数组时,直接启用MAX变量即可;

例如:

enum {
    FLOW_PROTO_TCP = 0,
    FLOW_PROTO_UDP,
    FLOW_PROTO_ICMP,
    FLOW_PROTO_SCTP,
    FLOW_PROTO_DEFAULT,
    /* should be last */
    FLOW_PROTO_MAX,
};


技巧十二:assert

#define NDEBUG    //取消bug调试

#include "assert.h" 
void assert( int expression );

assert属于宏,一般是用来检测非法情况,适合的场景使用,过多使用则影响性能,测试成功后

添加上述的宏变量在编译时忽略处理。


技巧十三:shutdown

关于shutdown命令掌握两个常用选项

-h xxx     表示在xxx情况下关机

       hh:mm   表示在几点几分关机

       now   表示立刻关机

例子:shutdown -h now

            shutdown -h 23:12

-r  +x    表示在x分钟后关机

例子:shutdown -r +3           3分钟后关机

-k   模拟关机,主要用来给其他登录用户发送消息

shutdown -k now "xxxxxxx"     向所有其他登录用户发送“xxxx”信息

-c     取消设定


技巧十四:巧用define

完成代码编写后,测试过程中会需要在关键位置添加printf输出信息,但是在发布前又需要取消这些输出信息,

但是当软件出现故障时,又有需要快速查看到测试时的关键信息,如何解决,define帮你快速解决这个烦恼,

示例代码:

#include<stdio.h>
#define __TEST__            //该宏取消定义,则由d()调用的printf函数失效,也就是看不到输出信息了。
#ifdef __TEST__
#define d(x) x
#else
#define d(x)
#endif

int main(){
printf("--test1--\n");
d(printf("This is a test c file.\n"));
printf("--test2--\n");
return 0;
}


技巧十五:ldd

常用示例:ldd   [可执行binary]

用来查询可执行binary包含的依赖动态库

[root@localhost bin]# ldd suricata
linux-vdso.so.1 =>  (0x00007fff8fbfe000)
libaivse000.so.5 => /usr/local/lib/libaivse000.so.5 (0x00007fe30ada9000)
libhtp-0.5.20.so.1 => /usr/local/lib/libhtp-0.5.20.so.1 (0x00007fe30ab89000)

        ... ...


技巧十六:ldconfig

简介:动态链接库管理工具

默认搜索目录:/lib    /usr/lib    /etc/ld.so.conf内所列出的目录

当新加载动态库时,需手动运行命令:ldconfig加载

常用命令:ldconfig -v       用于查看所有加载的目录下的动态


技巧十七:未完待续

0 0
原创粉丝点击