分类 Ubuntu 下的文章

“Ubuntu是以桌面应用为主的Linux发行版,基于Debian。Ubuntu有三个正式版本,包括桌面版、服务器版及用于物联网设备和机器人的Core版。从17.10版本开始,Ubuntu以GNOME为默认桌面环境。 Ubuntu是著名的Linux发行版之一,也是目前最多用户的Linux版本。 ”

linux使用shell获取unix时间。
UNIX时间,或称POSIX时间是UNIX或类UNIX系统使用的时间表示方式:从UTC1970年1月1日0时0分0秒起至现在的总秒数,不考虑闰秒。 在多数Unix系统上Unix时间可以透过date +%s指令来检查。

date +%s

1630900618

查看任意时间的unixtime

date -s '2021-09-06 12:00:00' && date +%s
Mon Sep 6 12:00:00 CST 2021
1630900800

查看2004-1-1 00:00:00 的unixtime

date -s '2004-01-01 00:00:00' && date +%s

Thu Jan 1 00:00:00 CST 2004
1072886400

date 格式化时间

date '+%Y-%m-%d %H:%m:%S'

2021-09-06 11:09:48

date '+%F %H:%m:%S'

2021-09-06 11:09:57

date '+%F %T'

2021-09-06 12:00:43

date +%s.%N
where (GNU Coreutils 8.24 Date manual)

+%s, seconds since 1970-01-01 00:00:00 UTC
+%N, nanoseconds (000000000..999999999) since epoch

date +%s.%N

1630907594.542788384

linux c syslog LOG_CONS off
linux c syslog 控制台不输出

openlog("SEC", LOG_PID, LOG_USER);

使用上面的选项打开控制台就不输出日志了。

可用的参数:
option

The option argument to openlog() is an OR of any of these:
LOG_CONS
Write directly to system console if there is an error while sending to system logger.

LOG_NDELAY

Open the connection immediately (normally, the connection is opened when the first message is logged).

LOG_NOWAIT

Don't wait for child processes that may have been created while logging the message. (The GNU C library does not create a child process, so this option has no effect on Linux.)

LOG_ODELAY

The converse of LOG_NDELAY; opening of the connection is delayed until syslog() is called. (This is the default, and need not be specified.)

LOG_PERROR

(Not in POSIX.1-2001 or POSIX.1-2008.) Print to stderr as well.

LOG_PID

Include PID with each message.

linux c openlog example

Here is an example of openlog, syslog, and closelog:

This example sets the logmask so that debug and informational messages get discarded without ever reaching Syslog. So the second syslog in the example does nothing.

#include <syslog.h>

setlogmask (LOG_UPTO (LOG_NOTICE));

openlog ("exampleprog", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);

syslog (LOG_NOTICE, "Program started by User %d", getuid ());
syslog (LOG_INFO, "A tree falls in a forest");

closelog ();

参照RabbitMq官网的安装教程(Installing on Debian and Ubuntu),来进行安装。

sudo apt install erlang-nox

安装完成后执行

erl

Erlang/OTP 22 [erts-10.6.4] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1]

Eshell V10.6.4 (abort with ^G)

wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -

sudo apt update
sudo apt install rabbitmq-server

安装完成后,查看服务状态

systemctl status rabbitmq-server

● rabbitmq-server.service - RabbitMQ Messaging Server

 Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
 Active: active (running) since Tue 2021-09-07 09:53:48 CST; 2 days ago

Main PID: 1581436 (beam.smp)

 Status: "Initialized"
  Tasks: 235 (limit: 18732)
 Memory: 95.7M
 CGroup: /system.slice/rabbitmq-server.service
         ├─1581432 /bin/sh /usr/sbin/rabbitmq-server
         ├─1581436 /usr/lib/erlang/erts-10.6.4/bin/beam.smp -W w -A 192 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db>
         ├─1581884 erl_child_setup 65536
         ├─1581943 inet_gethost 4
         └─1581944 inet_gethost 4

启动、停止、重启rabbitmq

sudo service rabbitmq-server start    # 启动
sudo service rabbitmq-server stop     # 停止
sudo service rabbitmq-server restart  # 重启 

执行了上面的步骤,rabbitMq已经安装成功。

启用 web端可视化操作界面,我们还需要配置Management Plugin插件

sudo rabbitmq-plugins enable rabbitmq_management   # 启用插件
sudo service rabbitmq-server restart    # 重启

此时,应该可以通过 http://localhost:15672/ 查看,使用默认账户guest/guest 登录。

用-X参数就可以了。

示例:

tcpdump -X -i lo udp

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
11:25:17.139605 IP localhost.localdomain.31005 > localhost.localdomain.31006: UDP, length 70

0x0000:  4500 0062 dd91 4000 4011 5ef7 7f00 0001  E..b..@.@.^.....
0x0010:  7f00 0001 791d 791e 004e fe61 ffff 0000  ....y.y..N.a....
0x0020:  0000 3d03 02a0 ae44 2c37 e39b 0200 0000  ..=....D,7......
0x0030:  0000 0000 0000 0000 0000 0000 0000 0000  ................
0x0040:  0000 0000 0000 0000 0000 0000 0000 0000  ................
0x0050:  0000 0000 0000 0000 0000 0000 0000 0000  ................
0x0060:  4097                                     @.

tcpdump -X -i lo udp -t -n -s0

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
IP 127.0.0.1.31005 > 127.0.0.1.31006: UDP, length 70

0x0000:  4500 0062 1baf 4000 4011 20da 7f00 0001  E..b..@.@.......
0x0010:  7f00 0001 791d 791e 004e fe61 ffff 0000  ....y.y..N.a....
0x0020:  0000 3d03 02a0 ae44 2c37 e39b 0200 0000  ..=....D,7......
0x0030:  0000 0000 0000 0000 0000 0000 0000 0000  ................
0x0040:  0000 0000 0000 0000 0000 0000 0000 0000  ................
0x0050:  0000 0000 0000 0000 0000 0000 0000 0000  ................
0x0060:  4097                                     @.

IP 127.0.0.1.31006 > 127.0.0.1.31005: UDP, length 10

0x0000:  4500 0026 1bb0 4000 4011 2115 7f00 0001  E..&..@.@.!.....
0x0010:  7f00 0001 791e 791d 0012 fe25 ffff 0000  ....y.y....%....
0x0020:  0000 0383 6b74                           ....kt

tcpdump的选项介绍

   -a    将网络地址和广播地址转变成名字;

   -d    将匹配信息包的代码以人们能够理解的汇编格式给出;

   -dd    将匹配信息包的代码以c语言程序段的格式给出;

   -ddd    将匹配信息包的代码以十进制的形式给出;

   -e    在输出行打印出数据链路层的头部信息,包括源mac和目的mac,以及网络层的协议;

   -f    将外部的Internet地址以数字的形式打印出来;

   -l    使标准输出变为缓冲行形式;

   -n    指定将每个监听到数据包中的域名转换成IP地址后显示,不把网络地址转换成名字;

     -nn:    指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示    -t    在输出的每一行不打印时间戳;

   -v    输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;

   -vv    输出详细的报文信息;

   -c    在收到指定的包的数目后,tcpdump就会停止;

   -F    从指定的文件中读取表达式,忽略其它的表达式;

   -i    指定监听的网络接口;

      -p:    将网卡设置为非混杂模式,不能与host或broadcast一起使用

   -r    从指定的文件中读取包(这些包一般通过-w选项产生);

   -w    直接将包写入文件中,并不分析和打印出来;

            -s snaplen         snaplen表示从一个包中截取的字节数。0表示包不截断,抓完整的数据包。默认的话 tcpdump 只显示部分数据包,默认68字节。
   -T    将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)

          -X            告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。

Referenced from:https://blog.csdn.net/hzhsan/article/details/43445787

抓取包含192.168.5.1 的数据包

tcpdump -i eth0 -vnn host 192.168.5.1 

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:36:24.160956 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.5.1 tell 192.168.5.2, length 46
11:36:30.217699 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.5.1 tell 192.168.5.224, length 46

抓取包含192.168.5.0/24网段的数据包

tcpdump -i eth0 -vnn net 192.168.5.0/24

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:37:35.841606 IP (tos 0x0, ttl 64, id 64005, offset 0, flags [DF], proto TCP (6), length 86)
抓取包含端口22的数据包

tcpdump -i eth0 -vnn port 22

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:38:54.606955 IP (tos 0x10, ttl 64, id 22286, offset 0, flags [DF], proto TCP (6), length 156)

192.168.5.222.22 > 192.168.5.44.53888: Flags [P.], cksum 0x8ce9 (incorrect -> 0xaa25), seq 3416103818:3416103934, ack 2794641981, win 255, length 116

抓取udp协议的数据包

tcpdump -i eth0 -vnn  udp

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:39:46.000102 IP (tos 0x0, ttl 255, id 17285, offset 0, flags [none], proto UDP (17), length 44)

192.168.6.251.21003 > 255.255.255.255.1234: UDP, length 16

Tcpdump命令参数详解_心静梵音的技术博客_51CTO博客
update:2021-9-17
5、抓取icmp协议的数据包

tcpdump -i eth0 -vnn icmp

6、抓取arp协议的数据包

tcpdump -i eth0 -vnn arp

7、抓取ip协议的数据包

tcpdump -i eth0 -vnn ip

8、抓取源ip是10.10.10.122数据包。

tcpdump -i eth0 -vnn src host 10.10.10.122

9、抓取目的ip是10.10.10.122数据包

tcpdump -i eth0 -vnn dst host 10.10.10.122

10、抓取源端口是22的数据包

tcpdump -i eth0 -vnn src port 22

11、抓取源ip是10.10.10.253且目的ip是22的数据包

tcpdump -i eth0 -vnn src host 10.10.10.253 and dst port 22
          

12、抓取源ip是10.10.10.122或者包含端口是22的数据包

tcpdump -i eth0 -vnn src host 10.10.10.122 or port 22

13、抓取源ip是10.10.10.122且端口不是22的数据包

tcpdump -i eth0 -vnn src host 10.10.10.122 and not port 22

14、抓取源ip是10.10.10.2且目的端口是22,或源ip是10.10.10.65且目的端口是80的数据包。

tcpdump -i eth0 -vnn ( src host 10.10.10.2 and dst port 22 ) or ( src host 10.10.10.65 and dst port 80 )

15、抓取源ip是10.10.10.59且目的端口是22,或源ip是10.10.10.68且目的端口是80的数据包。

tcpdump -i  eth0 -vnn 'src host 10.10.10.59 and dst port 22' or  ' src host 10.10.10.68 and dst port 80 '

16、把抓取的数据包记录存到/tmp/fill文件中,当抓取100个数据包后就退出程序。

tcpdump –i eth0 -vnn -w  /tmp/fil1 -c 100

17、从/tmp/fill记录中读取tcp协议的数据包

tcpdump –i eth0 -vnn -r  /tmp/fil1 tcp

18、从/tmp/fill记录中读取包含10.10.10.58的数据包

tcpdump –i eth0 -vnn -r /tmp/fil1 host 10.10.10.58

19、假如要抓vlan 1的包,命令格式如下:

tcpdump -i eth0 port 80 and vlan 1 -w /tmp/vlan.cap

20、在后台抓eth0在80端口的包,命令格式如下:

nohup tcpdump -i eth0 port 80 -w /tmp/temp.cap &

21、ARP包的tcpdump输出信息

tcpdump arp -nvv

22、使用tcpdump抓取与主机192.168.43.23或着与主机192.168.43.24通信报文,并且显示在控制台上

tcpdump -X -s 1024 -i eth0 host (192.168.43.23 or 192.168.43.24) and host 172.16.70.35

23、常用命令收藏

tcpdump -i eth0 -nn 'dst host 172.100.6.231'

tcpdump -i eth0 -nn 'src host 172.100.6.12'

tcpdump -i eth0 -nnA 'port 80'

tcpdump -i eth0 -XnnA 'port 22'

tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'

tcpdump -i eth0 -nnA '!port 22' and 'src host 172.100.6.230'

tcpdump -i eth0 -nnA '!port 22'
Referenced from:https://blog.51cto.com/masters/1870141