@@ -54,9 +54,9 @@ func (s *TCPdump) DumpStart(neType, neId, cmdStr string) (string, error) {
}
taskCode := time . Now ( ) . Format ( "20060102150405" )
// 存放文件目录 /tmp /omc/tcpdump/udm/001/20240817104241
neDirTemp := fmt . Sprintf ( "/tmp /omc/tcpdump/%s/%s/%s" , strings . ToLower ( neInfo . NeType ) , neInfo . NeId , taskCode )
sshClient . RunCMD ( fmt . Sprintf ( "mkdir -p %s && sudo chmod 777 -R /tmp/omc " , neDirTemp ) )
// 存放文件目录 /usr/local /omc/tcpdump/udm/001/20240817104241
neDirTemp := fmt . Sprintf ( "/usr/local /omc/tcpdump/%s/%s/%s" , strings . ToLower ( neInfo . NeType ) , neInfo . NeId , taskCode )
sshClient . RunCMD ( fmt . Sprintf ( "sudo mkdir -p %s && sudo chmod 755 -R /usr/local/omc/tcpdump " , neDirTemp ) )
// 命令拼装
logPath := fmt . Sprintf ( "%s/tcpdump.log" , neDirTemp )
@@ -65,8 +65,8 @@ func (s *TCPdump) DumpStart(neType, neId, cmdStr string) (string, error) {
filePath = fmt . Sprintf ( "%s/part_%%Y%%m%%d%%H%%M%%S.pcap " , neDirTemp )
}
sendCmd := fmt . Sprintf ( "sudo timeout 60m sudo tcpdump -i any %s -w %s > %s 2>&1 & echo $!" , cmdStr , filePath , logPath )
// sudo timeout 60m sudo tcpdump -i any -n -s 0 -v -G 60 -W 6 -w /tmp /omc/tcpdump/udm/001/20240817104241/part_%Y-%m-%d_%H:%M:%S.pcap > /tmp /omc/tcpdump/udm/001/20240817104241/tcpdump.log 2>&1 & echo $!
// sudo timeout 60m sudo tcpdump -i any -n -s 0 -v -w /tmp /omc/tcpdump/udm/001/20240817105440/part_2024-08-17_10:54:40.pcap > /tmp /omc/tcpdump/udm/001/20240817105440/tcpdump.log 2>&1 & echo $!
// sudo timeout 60m sudo tcpdump -i any -n -s 0 -v -G 60 -W 6 -w /usr/local /omc/tcpdump/udm/001/20240817104241/part_%Y-%m-%d_%H:%M:%S.pcap > /usr/local /omc/tcpdump/udm/001/20240817104241/tcpdump.log 2>&1 & echo $!
// sudo timeout 60m sudo tcpdump -i any -n -s 0 -v -w /usr/local /omc/tcpdump/udm/001/20240817105440/part_2024-08-17_10:54:40.pcap > /usr/local /omc/tcpdump/udm/001/20240817105440/tcpdump.log 2>&1 & echo $!
//
// timeout 超时60分钟后发送kill命令, 1分钟后强制终止命令。tcpdump -G 文件轮转间隔时间(秒) -W 文件轮转保留最近数量
// sudo timeout --kill-after=1m 60m sudo tcpdump -i any -n -s 0 -v -G 10 -W 7 -w /tmp/part_%Y%m%d%H%M%S.pcap > /tmp/part.log 2>&1 & echo $!
@@ -119,11 +119,11 @@ func (s *TCPdump) DumpStop(neType, neId, taskCode string) ([]string, error) {
}
s . logFileLastLineToFile ( PIDMap . ( map [ string ] string ) , sshClient )
// 存放文件目录 /tmp /omc/tcpdump/udm/001/20240817104241
neDirTemp := fmt . Sprintf ( "/tmp /omc/tcpdump/%s/%s/%s" , strings . ToLower ( neInfo . NeType ) , neInfo . NeId , taskCode )
// 存放文件目录 /usr/local /omc/tcpdump/udm/001/20240817104241
neDirTemp := fmt . Sprintf ( "/usr/local /omc/tcpdump/%s/%s/%s" , strings . ToLower ( neInfo . NeType ) , neInfo . NeId , taskCode )
// 命令拼装
sendCmd := fmt . Sprintf ( "pids=$(pgrep -P %s) && [ -n \"$pids\" ] && sudo kill $pids;sudo timeout 2s ls %s" , pid , neDirTemp )
// pids=$(pgrep -P 1914341) && [ -n "$pids" ] && sudo kill $pids;sudo timeout 2s ls /tmp /omc/tcpdump/udm/001/20240817104241
// pids=$(pgrep -P 1914341) && [ -n "$pids" ] && sudo kill $pids;sudo timeout 2s ls /usr/local /omc/tcpdump/udm/001/20240817104241
output , err := sshClient . RunCMD ( sendCmd )
output = strings . TrimSpace ( output )
if err != nil || strings . HasPrefix ( output , "ls: " ) {
@@ -158,7 +158,7 @@ func (s *TCPdump) logFileLastLine(neType string, sshClient *ssh.ConnSSH) map[str
}
for _ , v := range logFileArr {
lastLine , err := sshClient . RunCMD ( fmt . Sprintf ( "sed -n '$=' %s" , v ) )
lastLine , err := sshClient . RunCMD ( fmt . Sprintf ( "sudo sed -n '$=' %s" , v ) )
lastLine = strings . TrimSpace ( lastLine )
if err != nil || strings . HasPrefix ( lastLine , "sed: can't" ) {
logger . Errorf ( "logFileLastLine err: %s => %s" , lastLine , err . Error ( ) )
@@ -181,9 +181,9 @@ func (s *TCPdump) logFileLastLineToFile(PIDMap map[string]string, sshClient *ssh
neType := PIDMap [ "neType" ]
neId := PIDMap [ "neId" ]
taskCode := PIDMap [ "taskCode" ]
// 存放文件目录 /tmp /omc/tcpdump/udm/001/20240817104241
sshClient . RunCMD ( "mkdir -p /tmp/omc && sudo chmod 777 -R /tmp/omc" )
neDirTemp := fmt . Sprintf ( "/tmp/omc/tcpdump/%s/%s/%s" , strings . ToLower ( neType ) , neId , taskCode )
// 存放文件目录 /usr/local /omc/tcpdump/udm/001/20240817104241
neDirTemp := fmt . Sprintf ( "/usr/local/omc/tcpdump/%s/%s/%s" , strings . ToLower ( neType ) , neId , taskCode )
sshClient . RunCMD ( fmt . Sprintf ( "sudo mkdir -p %s && sudo chmod 755 -R /usr/local/omc/tcpdump" , neDirTemp ) )
lastLineMap := s . logFileLastLine ( neType , sshClient )
for lastLogFile , lastFileLine := range lastLineMap {
@@ -193,8 +193,8 @@ func (s *TCPdump) logFileLastLineToFile(PIDMap map[string]string, sshClient *ssh
startFileLine = "1" // 起始行号从第一行开始
}
outputFile := fmt . Sprintf ( "%s/%s" , neDirTemp , filepath . Base ( lastLogFile ) )
sendCmd := fmt . Sprintf ( "sed -n \"%s,%sp\" \"%s\" > \"%s\" " , startFileLine , lastFileLine , lastLogFile , outputFile )
// sed -n "1,5p" "/var/log/amf.log" > "/tmp /omc/tcpdump/amf/001/20241008141336/amf.log"
sendCmd := fmt . Sprintf ( "sudo sed -n \"%s,%sp\" \"%s\" | sudo tee \"%s\" > /dev/null " , startFileLine , lastFileLine , lastLogFile , outputFile )
// sudo sed -n "1,5p" "/var/log/amf.log" | sudo tee "/usr/local /omc/tcpdump/amf/001/20241008141336/amf.log" > /dev/null
output , err := sshClient . RunCMD ( sendCmd )
if err != nil || strings . HasPrefix ( output , "stderr:" ) {
logger . Errorf ( "logFileLastLineToFile err: %s => %s" , strings . TrimSpace ( output ) , err . Error ( ) )