mir3c/squashfs-root/usr/sbin/log_collection.sh

255 lines
7.9 KiB
Bash
Executable File

#!/bin/sh
redundancy_mode=`uci get misc.log.redundancy_mode`
LOG_TMP_FILE_PATH="/tmp/xiaoqiang.log"
LOG_ZIP_FILE_PATH="/tmp/log.tar.gz"
WIRELESS_FILE_PATH="/etc/config/wireless"
WIRELESS_STRIP='/tmp/wireless.conf'
NETWORK_FILE_PATH="/etc/config/network"
NETWORK_STRIP="/tmp/network.conf"
MACFILTER_FILE_PATH="/etc/config/macfilter"
CRONTAB="/etc/crontabs/root"
LOG_DIR="/data/usr/log/"
LOGREAD_FILE_PATH="/data/usr/log/messages"
LOGREAD0_FILE_PATH="/data/usr/log/messages.0"
LOG_WIFI_AYALYSIS="/data/usr/log/wifi_analysis.log"
LOG_WIFI_AYALYSIS0="/data/usr/log/wifi_analysis.log.0.gz"
PANIC_FILE_PATH="/data/usr/log/panic.message"
TMP_LOG_FILE_PATH="/tmp/messages"
TMP_WIFI_LOG_ANALYSIS="/tmp/wifi_analysis.log"
TMP_WIFI_LOG="/tmp/wifi.log"
DHCP_LEASE="/tmp/dhcp.leases"
IPTABLES_SAVE="/tmp/iptables_save.log"
TRAFFICD_LOG="/tmp/trafficd.log"
PLUGIN_LOG="/tmp/plugin.log"
LOG_MEMINFO="/proc/meminfo"
LOG_SLABINFO="/proc/slabinfo"
DNSMASQ_CONF="/var/etc/dnsmasq.conf"
QOS_CONF="/etc/config/miqos"
WIFISHARE_CONF="/etc/config/wifishare"
MICLOUD_LOG="/tmp/micloudBackup.log"
GZ_LOGS=""
hardware=`uci get /usr/share/xiaoqiang/xiaoqiang_version.version.HARDWARE`
# $1 plugin install path
# $2 output file path
list_plugin(){
for file in `ls $1 | grep [^a-zA-Z]\.manifest$`
do
if [ -f $1/$file ];then
status=$(grep -n "^status " $1/$file | cut -d'=' -f2 | cut -d'"' -f2)
plugin_id=$(grep "name" $1/$file | cut -d'=' -f2 | cut -d'"' -f2)
if [ "$status"x = "5"x ]; then
echo "$plugin_id" >> $2 # eanbled
fi
fi
done
}
rm -f $LOG_TMP_FILE_PATH
cat $TMP_LOG_FILE_PATH >> $LOGREAD_FILE_PATH
> $TMP_LOG_FILE_PATH
cat $TMP_WIFI_LOG_ANALYSIS >> $LOG_WIFI_AYALYSIS
> $TMP_WIFI_LOG_ANALYSIS
echo "==========SN" >> $LOG_TMP_FILE_PATH
nvram get SN >> $LOG_TMP_FILE_PATH
echo "==========uptime" >> $LOG_TMP_FILE_PATH
uptime >> $LOG_TMP_FILE_PATH
echo "==========df -h" >> $LOG_TMP_FILE_PATH
df -h >> $LOG_TMP_FILE_PATH
echo "==========bootinfo" >> $LOG_TMP_FILE_PATH
bootinfo >> $LOG_TMP_FILE_PATH
echo "==========tmp dir" >> $LOG_TMP_FILE_PATH
ls -lh /tmp/ >> $LOG_TMP_FILE_PATH
du -sh /tmp/* >> $LOG_TMP_FILE_PATH
echo "==========iwpriv wl0" >> $LOG_TMP_FILE_PATH
iwpriv wl0 e2p >> $LOG_TMP_FILE_PATH
echo "==========iwpriv wl1" >> $LOG_TMP_FILE_PATH
iwpriv wl1 e2p >> $LOG_TMP_FILE_PATH
echo "==========ifconfig" >> $LOG_TMP_FILE_PATH
ifconfig >> $LOG_TMP_FILE_PATH
echo "==========/proc/net/dev" >> $LOG_TMP_FILE_PATH
cat /proc/net/dev >> $LOG_TMP_FILE_PATH
echo "==========/proc/bus/pci/devices" >> $LOG_TMP_FILE_PATH
cat /proc/bus/pci/devices >> $LOG_TMP_FILE_PATH
echo "==========route" >> $LOG_TMP_FILE_PATH
route -n >> $LOG_TMP_FILE_PATH
cat $NETWORK_FILE_PATH | grep -v -e'password' -e'username' > $NETWORK_STRIP
cat $WIRELESS_FILE_PATH | grep -v 'key' > $WIRELESS_STRIP
echo "==========ps" >> $LOG_TMP_FILE_PATH
ps -w >> $LOG_TMP_FILE_PATH
log_exec()
{
echo "========== $1" >>$LOG_TMP_FILE_PATH
eval "$1" >> $LOG_TMP_FILE_PATH
}
list_messages_gz(){
for file in `ls /data/usr/log/ | grep ^messages\.[1-4]\.gz$`; do
GZ_LOGS=${GZ_LOGS}" /data/usr/log/"${file}
done
}
if [ "$hardware" = "R1D" ] || [ "$hardware" = "R2D" ]; then
/sbin/wifi_rate.sh 6 1 >> $LOG_TMP_FILE_PATH
local wps_proc_status
for count in `seq 0 3`; do
i=$(($count%2))
wps_proc_status=`nvram get wps_proc_status`
if [ "$wps_proc_status" = "0" ]; then
log_exec "acs_cli -i wl$i dump bss"
else
echo "========== wps is running!" >>$LOG_TMP_FILE_PATH
fi
log_exec "iwinfo wl$i info"
log_exec "iwinfo wl$i assolist"
log_exec "wl -i wl$i dump wlc"
log_exec "wl -i wl$i dump bsscfg"
log_exec "wl -i wl$i dump scb"
log_exec "wl -i wl$i dump ampdu"
log_exec "wl -i wl$i dump dma"
log_exec "wl -i wl$i chanim_stats"
log_exec "wl -i wl$i counters"
log_exec "wl -i wl$i dump stats"
log_exec "wl -i wl$i curpower"
sleep 1
done
elif [ "$hardware" = "R3D" ]; then
for i in `seq 0 1`; do
# wifi
log_exec "athstats -i wifi$i >> $LOG_TMP_FILE_PATH"
done
for i in 0 1 13 14; do
# wl
log_exec "iwinfo wl$i info >> $LOG_TMP_FILE_PATH"
log_exec "iwinfo wl$i assolist >> $LOG_TMP_FILE_PATH"
log_exec "iwinfo wl$i txpowerlist >> $LOG_TMP_FILE_PATH"
log_exec "iwinfo wl$i freqlist >> $LOG_TMP_FILE_PATH"
log_exec "wlanconfig wl$i list >> $LOG_TMP_FILE_PATH"
log_exec "80211stats -a -i wl$i >> $LOG_TMP_FILE_PATH"
log_exec "iwpriv wl$i txrx_fw_stats 1"
log_exec "iwpriv wl$i txrx_fw_stats 3"
log_exec "iwpriv wl$i txrx_fw_stats 19"
log_exec "iwpriv wl$i txrx_fw_stats 20"
done
/usr/sbin/getneighbor.sh ${LOG_TMP_FILE_PATH} > /dev/null 2>&1
else
#On R1CM, The follow cmd will print result to dmesg.
for i in `seq 0 3`; do
log_exec "iwinfo wl$i info"
log_exec "iwinfo wl$i assolist"
log_exec "iwinfo wl$i txpowerlist"
log_exec "iwinfo wl$i freqlist"
log_exec "iwpriv wl$i stat"
log_exec "iwpriv wl$i show stat"
log_exec "iwpriv wl$i show stainfo"
log_exec "iwpriv wl$i rf"
log_exec "iwpriv wl$i bbp"
done
/usr/sbin/getneighbor.sh ${LOG_TMP_FILE_PATH} > /dev/null 2>&1
fi
#On R1D, the follow print to UART.
echo "==========dmesg:" >> $LOG_TMP_FILE_PATH
dmesg >> $LOG_TMP_FILE_PATH
sleep 1
echo "==========meminfo" >> $LOG_TMP_FILE_PATH
cat $LOG_MEMINFO >> $LOG_TMP_FILE_PATH
echo "==========topinfo" >> $LOG_TMP_FILE_PATH
top -b -n1 >> $LOG_TMP_FILE_PATH
echo "==========slabinfo" >> $LOG_TMP_FILE_PATH
cat $LOG_SLABINFO >> $LOG_TMP_FILE_PATH
[ -f "/usr/sbin/et" ] && {
echo "==========et port_status:" >> $LOG_TMP_FILE_PATH
/usr/sbin/et port_status >> $LOG_TMP_FILE_PATH
}
[ -b /dev/sda -a "SATA" = "`getdisk bus sda`" ] && {
echo "==========smartctl info:" >> $LOG_TMP_FILE_PATH
smartctl --all /dev/sda >> $LOG_TMP_FILE_PATH
}
#dump ppp and vpn status
log_exec "cat /tmp/pppoe.log"
log_exec "cat /tmp/vpn.stat.msg"
log_exec "ubus call turbo_ccgame get_pass"
iptables-save -c > $IPTABLES_SAVE
ubus call trafficd hw '{"debug":true}' > $TRAFFICD_LOG
# list enabled plugin's name
list_plugin /userdisk/appdata/app_infos $PLUGIN_LOG
list_messages_gz
MICLOUD_LOG_PATH="/userdisk/data/.pluginConfig/2882303761517344979/micloudBackup.log"
[ -f $MICLOUD_LOG_PATH ] && {
FILE_SIZE=`ls -l $MICLOUD_LOG_PATH | awk '{print $5}'`
[ $FILE_SIZE -lt 4194304 ] && {
cp $MICLOUD_LOG_PATH $MICLOUD_LOG
}
}
# busybox's tar requires every source file existing!!
[ -e "$IPTABLES_SAVE" ] || IPTABLES_SAVE=
[ -e "$TRAFFICD_LOG" ] || TRAFFICD_LOG=
[ -e "$PLUGIN_LOG" ] || PLUGIN_LOG=
[ -e "$NETWORK_STRIP" ] || NETWORK_STRIP=
[ -e "$MICLOUD_LOG" ] || MICLOUD_LOG=
move_files="$LOG_TMP_FILE_PATH $IPTABLES_SAVE $TRAFFICD_LOG $PLUGIN_LOG $NETWORK_STRIP $WIRELESS_STRIP $MICLOUD_LOG"
[ -e "$DHCP_LEASE" ] || DHCP_LEASE=
[ -e "$DNSMASQ_CONF" ] || DNSMASQ_CONF=
[ -e "$MACFILTER_FILE_PATH" ] || MACFILTER_FILE_PATH=
[ -e "$CRONTAB" ] || CRONTAB=
[ -e "$QOS_CONF" ] || QOS_CONF=
[ -e "$WIFISHARE_CONF" ] || WIFISHARE_CONF=
dup_files="$DHCP_LEASE $DNSMASQ_CONF $MACFILTER_FILE_PATH $CRONTAB $QOS_CONF $WIFISHARE_CONF"
[ -e "$LOGREAD_FILE_PATH" ] || LOGREAD_FILE_PATH=
[ -e "$LOGREAD0_FILE_PATH" ] || LOGREAD0_FILE_PATH=
[ -e "$PANIC_FILE_PATH" ] || PANIC_FILE_PATH=
[ -e "$LOG_WIFI_AYALYSIS" ] || LOG_WIFI_AYALYSIS=
[ -e "$LOG_WIFI_AYALYSIS0" ] || LOG_WIFI_AYALYSIS0=
[ -e "$GZ_LOGS" ] || GZ_LOGS=
[ -e "$LOG_DIR" ] || LOG_DIR=
[ -e "$TMP_WIFI_LOG" ] || TMP_WIFI_LOG=
if [ "$redundancy_mode" = "1" ]; then
redundancy_files="$LOGREAD_FILE_PATH $LOGREAD0_FILE_PATH $PANIC_FILE_PATH $LOG_WIFI_AYALYSIS $LOG_WIFI_AYALYSIS0 $GZ_LOGS"
else
redundancy_files="$LOG_DIR $PANIC_FILE_PATH $TMP_WIFI_LOG"
fi
tar -zcf $LOG_ZIP_FILE_PATH $move_files $dup_files $redundancy_files
rm "$move_files" > /dev/null