一些 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

参考资料

评论