一些 Linux 的工具
周末闲着无聊继续整理之前的笔记,这次记录的是一些在使用Linux时的常用工具,不过一两年不用还有点生疏,有的软件甚至都没了Yum源只能编译安装。抱怨一下,编译安装是真的麻烦,各种依赖包找来找去,有的时候还找的版本对不上,玩得我心累。更新没结束,抽时间整理。
轻量级网络监控 Iftop
这是一个挺不错的实时网络流量监控软件,如果要求不高的话配合 vnStat 就足够了。不过它不太适合长时间的监控,仅用于短期内的网络故障排查。
- 安装
# yum install libpcap libpcap-devel ncurses ncurses-devel # yum install flex byacc iftop
- 使用
# iftop -P -i venet0
这是这个软件最常规的用法,当然可以靠重定向等行为让它保存日志文件到硬盘,不过这种方法监控网络还得需要写个 Shell 脚本让它 Crash 之后重新启动,保存的日志文件格式也需要重新调整,非常麻烦。总之不是很推荐长期使用。
重量级网络监控 Ntopng
它是一种可应对多台服务器的网络探嗅器。这个软件的前身的 Ntop,后来好像出现了一些各种不可名状的问题,官方就停止更新了,取而代之地发布了 Ntopng。这软件对于我来说,其实最好用的是 PF_RING 抓包的管理,省了我用 Tcpdump 抓包还得加载 PF_RING 后自己写半天的 shell 脚本让它自动化管理抓包的繁琐行为。
- 设置 Yum 源
# wget http://packages.ntop.org/centos/epel-7.repo -O epel.repo # rpm -Uvh epel-release-7-9.noarch.rpm
- 安装 Ntopng 及其依赖
# yum clean all # yum update -y #yum install libpcap-devel glib2-devel GeoIP-devel libxml2-devel libcurl-devel redis autoconf automake sqlite-devel # yum install pfring n2disk nProbe ntopng ntopng-data nbox
- 配置 Ntopng
# vi /etc/ntopng/ntopng.conf.sample
在 Ntopng 安装完成后,默认的配置文件模板是/etc/ntopng/ntopng.conf.sample
,可以将此文件重命名为ntopng.conf
,然后在这个配置文件中添加一些配置信息,如果安装之后没有这个文件,就自己新建一个。文件的大致内容如下-G=/var/tmp/ntopng.gid # Appoints where to store the PID file --local-networks “xxx.xxx.xxx.xxx/32”# Sets local networks --interface venet0 # Configures the network interface --user nobody # Who run it --http-port 3000 # Which port can be login for manage on website
- 启动
# systemctl start redis # nohup ntopng /etc/ntopng/ntopng.conf &
因为 NTopNG 的数据库是依靠 Redis 的,所以还得同时启动它,如果有必要,强烈建议同时将它们设为开机启动。
网络资源下载 Aria2
- 安装
# yum install aria2
- 简单使用
直接下载: # aria2c [file_URL] 使用两个连接下载: # aria2c -x2 [file_URL] 断点续传且使用5个线程: # aria2c -c -s 5 [file_URL]
- 配置文件
# mkdir /etc/aria2 # vi /etc/aria2/aria2.conf
aria2 是不自带配置文件的,需要我们自行创建(也许是我看文档的时候看漏了?)然后再在配置文件中写入以下内容,具体参数要求官方文档可见。enable-rpc=true rpc-allow-origin-all=true rpc-listen-all=true rpc-listen-port=6800 max-concurrent-downloads=5 continue=true max-connection-per-server=5 min-split-size=10M split=10 max-overall-download-limit=0 max-download-limit=0 max-overall-upload-limit=0 max-upload-limit=0 dir=/home/cubat/downloads file-allocation=prealloc
- 配合 WebUI 方便管理
# aria2c --conf-path=/etc/aria2/aria2.conf -D
首先使用 Daemon 模式启动于后台,这里使用 Webui-aria2 作为 webui。# git clone https://github.com/ziahamza/webui-aria2 # cd webui-aria2/ # python -m SimpleHTTPServer 5401
好了,现在在浏览器上输入 http://[ Linux的ip ]:5401/ 即可操作 Aria。
高可用数据安全工具 DRBD
- 安装
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm # yum install -y kmod-drbd84 drbd84-utils
编译安装非常麻烦,非常麻烦,非常麻烦。所以我选择添加一个带有 DRBD8.4 的 Yum 源,然后直接使用 Yum 进行安装。注意一下,安装完成之后还需要把 DRBD 模块加载到内核中。# modprobe drbd # lsmod | grep -i drbd
当然,这是个 HA 软件,所以你不可能只在一台 VPS 上安装,因此重复以上步骤到一台新的 VPS 上,做出另外一个 HA 节点。这里插一句,DRBD 的主要特性有:单主模式,即集群中只有一个主节点可对数据进行读写操作,可以用在这种模式下的文件系统有 EXT3, EXT4, XFS等;双主模式,集群中存在两个主用节点,通常用作负载均衡对数据进行并发读写操作,常用这个模式的文件系统有 GFS,OCFS2 等;复制模式,复制模式主要有三种,分别在备胎传输前,备胎传输完和备胎写入成功后认为一个写的操作完成作为划分,第三者较为常用;传输完整性校验;脑裂通知和自动修复,脑裂修复方法有四种,分别是丢弃较新主用节点的修改,丢弃较旧节点所做的修改,丢弃修改较少的主用节点,其中一个节点未发生变动则完美修复。 - 配置 NTP 服务器
# systemctl disable chronyd # systemctl enable ntpd # sed -i "/^server\ 3.centos.pool/a server\ [Main_Node_IP_Addr] " /etc/ntp.conf # systemctl start ntpd # ntpq -p
两台 VPS 上都必须执行这个命令,以便两台服务器的时间能够对得上。 - 配置文件介绍
# cat /etc/drbd.conf # Major file for DRBD configuration. # cat /etc/drbd.d/global_common.conf # Global file for DRBD configuration.
提示:主配置文件中包含了全局配置文件及”drbd.d/”目录下以.res结尾的文件. - 启动
# drbdadm create-md [cluster name] # systemctl start drbd
- 查看节点状态
# cat /proc/drbd
数据恢复软件 Extundelete
- 安装
# yum install extundelete
这个软件主要用于Ext3&4文件系统,依据inode表进行扫描,然后利用inode信息结合日志查询inode所在的block位置并将这些信息备份出来从而达到数据恢复的恢复方法。 - 创建数据误删环境
# mkdir /test # umount /dev/mapper/centos-home # mkfs.ext3 /dev/mapper/centos-home # mount /dev/mapper/centos-home /test # cp -rf /tmp /test # md5sum /test/* # rm -rf /test/* # umount /dev/mapper/centos-home
首先创建一个文件夹,把系统上的 LVM 卸载一个下来,格式化成 ext3 格式,然后把它挂载到刚刚创建的/test
目录下。在随意的写入操作之后,计算一下文件的MD5。最后把它们都删了,卸载LVM。 - 查询可恢复的数据
# extundelete /dev/mapper/centos-home --inode 2
显示节点 inode 为 2 的信息,顺带一说,查询Linux根目录节点数量为# ls -id /
- 恢复文件
# extundelete /dev/mapper/centos-home --restore-all # extundelete /dev/mapper/centos-home --restore-directory # extundelete /dev/mapper/centos-home --restore-file # extundelete /dev/mapper/centos-home --restore-all --after / before [ date +%s ]
第一条命令是恢复所有文件。第二条是恢复一个文件夹,提醒一下,文件夹写“查询可恢复数据”时列出的文件夹即可,并非原本存在的绝对路径。第三条命令是恢复某个名称的文件。第四条是恢复某个时间点前/后的文件,格式为date +%s
并行分布式运维工具 PSSH / PDSH / MUSSH
首先,直接用 Yum 进行安装即可。
# yum install pssh
# yum install pdsh
# yum install mussh
使用方法可以参考官网的 Documentation 或
# man [pssh/pdsh/mussh]
值得注意的是,使用这些工具时,都必须配置本地主机和远程主机间的单向信任,就是用密钥登陆口牙。
这三个工具其实都属于并行分布式工具。这类工具常用在集群节点操作中,因为比如当我们使用DRBD之类的软件时,有许多操作需要两个节点进行同样的设置。
写一个Shell脚本虽然是个好办法,但是如果是一两条命令写一个shell再传来传去就多多少少有些尴尬。这三个工具都支持远程执行命令,但也各有各的优点:
PSSH 对文件并行复制的支持较好,如果要批量在远程主机上上传下载文件,最好选它。常用方法如下:
# pssh -i -h ~/.pssh_hosts_files [cmd]
# pscp -h ~/.pssh_hosts_files [src] [dest]
值得一提的是,其 hostlist 文件格式为
[username]@[ip_addr]
[username]@[ip_addr]
[username]@[ip_addr]
……
PDSH 对并行执行远程目标主机命令操作的效率较高,同时还支持交互式控制。常用方法如下:
# pdsh -R ssh -l root -w [ip_addr] [cmd]
# pdsh -R ssh -l root -w [hostname] [cmd]
# pdsh -R ssh -l root -w [hostlist] [cmd]
hostlist 文件格式为
[ip_addr] // or [hostname]
[ip_addr] // or [hostname]
[ip_addr] // or [hostname]
……
MUSSH 可作为前两者的补充,因为其可以在多台远程主机上执行 shell 脚本。常用方法如下:
# mussh -m -u -b -t 6 -h [username]@[ip_addr] -c [cmd]
# mussh -m -u -b -t 6 -H [hostlist] -c [cmd]
hostlist 文件格式为
[username]@[ip_addr]
[username]@[ip_addr]
[username]@[ip_addr]
……
其他常用的小工具
- 系统信息统计工具 Vmstat / Top / Procinfo / Mpstat / Sar
- 内存信息统计工具 Free / Slabtop / Memprof / Valgrind / Kcachegrind / Ipcs
- 磁盘信息统计工具 Iostat / Lsof
- 网络信息统计工具 Mii-tool / Ethtool / ip / Gkrellm / Iptraf / netstat / Etherape
- 端口信息统计工具 Namp / Autoscan / Unicorn Scan
- 其他工具 Metasploit
评论
发表评论