技巧

查询所有/root/下的空文件夹

1
find /root -type d -empty  

find命令使用多个条件

find可以多个条件一起用 用 -o或者 ! 符都可以连接下一个条件,!意思为非, 下面的例子是找出目录中.c和.h的所有文件

1
find dir -name '*.c' -o -name '*.h' ! -type d

shell数组中@和*的区别

使用*号在有双引号的情况下,会被当作字符串,没有双引号效果一样

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
arr=(1 2 'a' b)

for i in "${arr[*]}"
do 
    echo ${i}
done

for i in "${arr[@]}"
do 
    echo ${i}
done

输出:
1 2 a b
1
2
a
b

取得脚本路径

返回带全路径的文件路径:

1
FILEPATH="$(readlink -f $0)"

取脚本所在目录路径:

1
BASEDIR="$(dirname $(readlink -f $0))"

shell中的数组和空格分割的字符串

两者很相似,从命令行获得的是普通的空格分割的字符串要把这种字符串转为数组可以使用 (字符串) 的方式

要把数组转为字符串可以使用 ${数组[@]} 的方式

shell单例

使用flock命令来实现对shell脚本的单例,如下:

1
flock -xn /tmp/test.lock -c '/bin/sh /tmp/test.sh'

也可以在shell脚本中使用flock实现单例,如下:

1
2
3
# 放在shell脚本头
exec 200>/tmp/$(basename $0).lock
flock -n 200 || exit

Ubuntu 18.04使用vnc

除了参考文章上说的步骤, 执行vncserver时还要加一个参数 -localhost no  ,不然只能本地访问

参考:

https://www.cyberciti.biz/faq/install-and-configure-tigervnc-server-on-ubuntu-18-04/

工具

网络配置

一般使用ip、ifconfig、route来配置网络,而ifconfig所在的net-tools已经多年没人维护,所以更推荐使用ip命令完成配置工作。

查看网络配置:

1
2
3
4
5
6
7
ip a
ip addr
ip a show ech0

ifconfig
ifconfig ech0

设置IP:

1
2
3
4
ip addr add 192.168.11.11/24 dev ens33

ifconfig ens33 192.168.11.11/24
ifconfig ens33:1 192.168.11.11/24

要注意的是使用ip addr来添加ip,如果原来网口有一个ip,会新增一个ip相当于ifconfig的ens33:1。怎样使用ip addr来替换原来的ip还没找到。

查看路由:

1
2
3
route -n

ip route

设置默认路由:

1
2
3
4
5
ip route add default via 172.16.110.110 dev ens33
ip route del default via 172.16.110.110 dev ens33

route add default gw 172.16.110.111 dev ens33
route del default gw 172.16.110.111 dev ens33

对特定ip设置路由:

1
2
3
4
route add -net 110.110.110.0 netmask 255.255.255.0 gw 172.16.110.111 dev ens33
route add -net 110.110.110.0/24 gw 172.16.110.111 dev ens33

ip route add 110.110.110.0/24 via 172.16.110.111 dev ens33

traceroute命令可以跟踪到达目的ip经过的路由ip:

1
traceroute 114.114.114.114

参考:

iptables

iptables是一个链的方式从前往后判断,如果前面的规则成立就不会往后继续。

参数“-A”是Append意思,也就是追加;

参数“-I”是Insert意思,也就是插入;

参数“-F”是Flush意思,表示清除(即删除)掉已有规则,也就是清空。

“-j”参数后跟的是动作,即满足规则时执行的操作,可以为ACCEPT、DROP、REJECT和REDIRECT等

查看已有的规则:

1
iptables -L -n

-n 不使用常用服务名称来命名端口号

其它机器能访问本机80端口:

1
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

-p 协议

–dport 目标端口

–sport 源端口

-s源地址

-d目的地址

删除INPUT第一条规则:

1
2
3
4
5
#
使用命令查看要删除的规则的行号
iptables -n --line-number -L INPUT

iptables -D INPUT 1

–line-number 显示规则行号

清空INPUT表规则:

1
iptables -F INPUT

其它参数:

-v:显示详细信息

-vv -vvv :越多越详细

-x:在计数器上显示精确值,不做单位换算

-t nat:显示所有的关卡的信息

ps:

tcpdump

监听 ens33端口,打印数据内容源:

1
tcpdump -i ens33 -vnn -X tcp and src host 172.16.110.30 and dst host www.baidu.com and dst port 443

-i 网口

-vnn -v是详细的意思 还可以 -vv, nn是直接显示端口不不显示服务名

tcp tcp协议

-X 显示数据

-w /tmp/xxx.cap 把结果存到文件,可以直接放到wireshark做分析

参考:

docker

待续…

top

 查看系统资源查看器,大写P按cpu占用排序,大写M按内存占用排序

nmap

扫描目标设备的tcp端口:

1
nmap -T4  -sS 10.100.10.102

T0 => paranoid 慢速网络扫描,串行扫描,两次扫描间隔 5 分钟。扫描速度极慢。

T1 => Sneky 慢速网络扫描,串行扫描,两次扫描间隔 15 秒,扫描速度较慢。

T2 => Polite 中速网络扫描,串行扫描,两次扫描间隔 400 毫秒,扫描速度慢。

T3 => Normal 中速网络扫描,并行扫描,两次扫描间隔 0 秒,扫描速度正常。

T4 => Aggressive 快速网络扫描,并行扫描,两次扫描间隔 0 秒,扫描速度较快。

T5 => Normal 快速网络扫描,并行扫描,两次扫描间隔 0 秒,扫描速度极快。

-sS 使用SYN+ACK的方法,使用TCP SYN。

-sT 使用TCP的方法, 完成3次握手。

-sU 扫描UDP。

-p 指定端口。

-A 全面系统检测,扫描主机操作系统和所启用的服务。

参考: