Linux shell脚本监控TCP状态

DingGuodong 2019-11-12 776

Linux shell脚本监控TCP状态,如time_wait、established等。

注:脚本内容在网页里显示不太正常,可直接点击原文链接https://github.com/DingGuodong/LinuxBashShellScriptForOps/blob/master/functions/net/tcp/port/monitor_tcp_status.sh

脚本内容:

#!/usr/bin/env bash
# code snippets for TCP status monitoring
tcp_summary_statistics=$(ss -s)
function get_tcp_state_from_ss() {
  case $1 in
  tcp_total | total)
    echo "$tcp_summary_statistics" | awk "NR==2" | awk '{print $2}'
    ;;
  tcp_estab | estab)
    echo "$tcp_summary_statistics" | awk "NR==2" | awk '{print +$4}'
    ;;
  tcp_closed | closed)
    echo "$tcp_summary_statistics" | awk "NR==2" | awk '{print +$6}'
    ;;
  tcp_orphaned | orphaned)
    echo "$tcp_summary_statistics" | awk "NR==2" | awk '{print +$8}'
    ;;
  tcp_synrecv | synrecv)
    echo "$tcp_summary_statistics" | awk "NR==2" | awk '{print +$10}'
    ;;
  tcp_timewait | timewait)
    echo "$tcp_summary_statistics" | awk "NR==2" | awk '{print +$12}'
    ;;
  tcp_ports | ports)
    echo "$tcp_summary_statistics" | awk "NR==2" | awk '{print +$NF}'
    ;;
  esac
}
function get_tcp_states_from_netstat() {
  #  netstat -n | awk '/^tcp/ {++STATES[$NF]} END {for(TYPE in STATES) print TYPE, STATES[TYPE]}'
  #  netstat -n | awk '/^tcp/ {++STATES[$NF]} END {print STATES["TIME_WAIT"]}'
  netstat -n | awk "/^tcp/ {++STATES[\$NF]} END {print STATES[\"$1\"]}"
}
get_tcp_state_from_ss total
get_tcp_state_from_ss estab
get_tcp_state_from_ss closed
get_tcp_state_from_ss orphaned
get_tcp_state_from_ss synrecv
get_tcp_state_from_ss timewait
get_tcp_state_from_ss ports
get_tcp_states_from_netstat TIME_WAIT
get_tcp_states_from_netstat SYN_SENT
get_tcp_states_from_netstat FIN_WAIT1
get_tcp_states_from_netstat FIN_WAIT2
get_tcp_states_from_netstat ESTABLISHED
get_tcp_states_from_netstat CLOSING

--end--

最新回复 (0)
    • 运维开源项目互助社区
      2
        立即登录 立即注册 
返回