mirror of
https://dev.iopsys.eu/bbf/bbfdm.git
synced 2025-12-10 07:44:39 +01:00
Diagnostics: Fixes some issues and improves scripts
This commit is contained in:
parent
95a9418e04
commit
ace24d82fc
7 changed files with 58 additions and 48 deletions
|
|
@ -78,6 +78,16 @@ void init_diagnostics_operation(char *sec_name, char *operation_path)
|
|||
dmcmd("/bin/sh", 2, operation_path, "stop");
|
||||
}
|
||||
|
||||
void remove_unused_diagnostic_sections(char *sec_name)
|
||||
{
|
||||
struct uci_section *s = NULL, *stmp = NULL;
|
||||
|
||||
check_create_dmmap_package(DMMAP_DIAGNOSTIGS);
|
||||
uci_path_foreach_sections_safe(bbfdm, DMMAP_DIAGNOSTIGS, sec_name, stmp, s) {
|
||||
dmuci_delete_by_section_bbfdm(s, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void set_diagnostics_interface_option(struct dmctx *ctx, char *sec_name, char *value)
|
||||
{
|
||||
char *linker = NULL;
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ char *get_diagnostics_option_fallback_def(char *sec_name, char *option, char *de
|
|||
void set_diagnostics_option(char *sec_name, char *option, char *value);
|
||||
void reset_diagnostic_state(char *sec_name);
|
||||
void init_diagnostics_operation(char *sec_name, char *operation_path);
|
||||
void remove_unused_diagnostic_sections(char *sec_name);
|
||||
void set_diagnostics_interface_option(struct dmctx *ctx, char *sec_name, char *value);
|
||||
int start_upload_download_diagnostic(int diagnostic_type);
|
||||
int bbf_upload_log(const char *url, const char *username, const char *password,
|
||||
|
|
|
|||
|
|
@ -1847,8 +1847,8 @@ static int operate_IPDiagnostics_TraceRoute(char *refparam, struct dmctx *ctx, v
|
|||
char *route_hops_errorcode = NULL;
|
||||
int i = 1;
|
||||
|
||||
init_diagnostics_operation("RouteHops", TRACEROUTE_PATH);
|
||||
init_diagnostics_operation("traceroute", TRACEROUTE_PATH);
|
||||
remove_unused_diagnostic_sections("RouteHops");
|
||||
|
||||
char *host = dmjson_get_value((json_object *)value, 1, "Host");
|
||||
if (host[0] == '\0')
|
||||
|
|
|
|||
|
|
@ -771,8 +771,8 @@ static int operate_DNSDiagnostics_NSLookupDiagnostics(char *refparam, struct dmc
|
|||
char *nslookup_response_time[2] = {0};
|
||||
int i = 1;
|
||||
|
||||
init_diagnostics_operation("NSLookupResult", NSLOOKUP_PATH);
|
||||
init_diagnostics_operation("nslookup", NSLOOKUP_PATH);
|
||||
remove_unused_diagnostic_sections("NSLookupResult");
|
||||
|
||||
char *hostname = dmjson_get_value((json_object *)value, 1, "HostName");
|
||||
if (hostname[0] == '\0')
|
||||
|
|
|
|||
|
|
@ -18,54 +18,49 @@ nslookup_launch() {
|
|||
[ -e "${LOG_FILE}" ] && rm ${LOG_FILE}
|
||||
while [ $i -lt "$cnt" ]; do
|
||||
i=$((i+1))
|
||||
time1=$(date +%s)
|
||||
if [ -z "$dnsserver" ]; then
|
||||
nslookup "$hostname" >>${LOG_FILE} 2>&1
|
||||
else
|
||||
nslookup "$hostname" "$dnsserver" >>${LOG_FILE} 2>&1
|
||||
fi
|
||||
time2=$(date +%s)
|
||||
timeresponse=$(($(($time2-$time1))*1000))
|
||||
echo "ResponseTime: $timeresponse" >>${LOG_FILE}
|
||||
nslookup -debug $hostname $dnsserver >>${LOG_FILE} 2>&1
|
||||
error_code="$?"
|
||||
nxd=$(cat ${LOG_FILE} | grep "NXDOMAIN")
|
||||
[ -n "$nxd" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.nslookup.DiagnosticState=Error_DNSServerNotResolved; $UCI_COMMIT_BBF_DMMAP; return; }
|
||||
[ "$error_code" != "0" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.nslookup.DiagnosticState=Error_Other; $UCI_COMMIT_BBF_DMMAP; return; }
|
||||
echo "++++++++++++++++++++++++++++++" >>${LOG_FILE}
|
||||
done
|
||||
|
||||
while IFS= read line; do
|
||||
[ -z "$line" ] && continue;
|
||||
server=$(echo "$line" | tr -d '\t' | tr -d ' ' | grep "Server:" | awk -F':' '{print $2}')
|
||||
[ -z "$line" ] && continue;
|
||||
server=$(echo "$line" | tr -d '\t' | tr -d ' ' | grep "Server:" | awk -F':' '{print $2}')
|
||||
|
||||
if [ -n "$server" ] && [ "$server" = "0.0.0.0" ]; then
|
||||
status="Error_DNSServerNotAvailable"
|
||||
continue
|
||||
elif [ -n "$server" ]; then
|
||||
dns_server_ip=$server
|
||||
continue
|
||||
fi
|
||||
if [ -n "$server" ] && [ "$server" = "0.0.0.0" ]; then
|
||||
status="Error_DNSServerNotAvailable"
|
||||
continue
|
||||
elif [ -n "$server" ]; then
|
||||
dns_server_ip=$server
|
||||
continue
|
||||
fi
|
||||
|
||||
var=$(echo "$line" | tr -d '\t' | tr -d ' ' | grep "Name:" | awk -F':' '{print $2}')
|
||||
[ -n "$var" ] && { HostNameReturned=$var; status="Success"; AnswerType="Authoritative"; success_count=$((success_count+1)); continue; }
|
||||
var=$(echo "$line" | tr -d '\t' | tr -d ' ' | grep "Name:" | awk -F':' '{print $2}')
|
||||
[ -n "$var" ] && { HostNameReturned=$var; status="Success"; AnswerType="Authoritative"; success_count=$((success_count+1)); continue; }
|
||||
|
||||
var=$(echo "$line" | grep "Address: " | awk -F':' '{print substr($0, index($0,$2))}' | tr -d '\t' | tr -d ' ')
|
||||
[ -n "$var" ] && { [ -z "$address" ] && address="$var" || address="$address,$var"; continue; }
|
||||
var=$(echo "$line" | grep "Address: " | awk -F':' '{print substr($0, index($0,$2))}' | tr -d '\t' | tr -d ' ')
|
||||
[ -n "$var" ] && { [ -z "$address" ] && address="$var" || address="$address,$var"; continue; }
|
||||
|
||||
var=$(echo "$line" | tr -d '\t' | tr -d ' ' | grep "ResponseTime:" | awk -F':' '{print $2}')
|
||||
[ -n "$var" ] && { ResponseTime=$var; continue; }
|
||||
var=$(echo "$line" | grep "completed" | awk -F'in' '{print $2}' | tr -d 'ms:\t ')
|
||||
[ -n "$var" ] && { ResponseTime=$var; continue; }
|
||||
|
||||
echo "$line" | grep 'Can' >/dev/null 2>&1 && { continue; }
|
||||
echo "$line" | grep 'connection timed out' >/dev/null 2>&1 && { AnswerType="None"; status="Error_Timeout"; continue; }
|
||||
echo "$line" | grep 'Non-authoritative' >/dev/null 2>&1 && { AnswerType="NonAuthoritative"; continue; }
|
||||
echo "$line" | grep 'connection timed out' >/dev/null 2>&1 && { AnswerType="None"; status="Error_Timeout"; continue; }
|
||||
echo "$line" | grep 'Non-authoritative' >/dev/null 2>&1 && { AnswerType="NonAuthoritative"; continue; }
|
||||
|
||||
if echo "$line" | grep '++++++++++++++++++++++' >/dev/null 2>&1; then
|
||||
$UCI_ADD_BBF_DMMAP dmmap_diagnostics NSLookupResult
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].Status="$status"
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].AnswerType="$AnswerType"
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].HostNameReturned="$HostNameReturned"
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].IPAddresses="$address"
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].DNSServerIP="$dns_server_ip"
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].ResponseTime="$ResponseTime"
|
||||
j=$((j+1))
|
||||
address=""
|
||||
fi
|
||||
if echo "$line" | grep '++++++++++++++++++++++' >/dev/null 2>&1; then
|
||||
$UCI_ADD_BBF_DMMAP dmmap_diagnostics NSLookupResult
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].Status="$status"
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].AnswerType="$AnswerType"
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].HostNameReturned="$HostNameReturned"
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].IPAddresses="$address"
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].DNSServerIP="$dns_server_ip"
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].ResponseTime="$ResponseTime"
|
||||
j=$((j+1))
|
||||
address=""
|
||||
fi
|
||||
done <${LOG_FILE}
|
||||
rm -f ${LOG_FILE}
|
||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.nslookup.SuccessCount=$success_count
|
||||
|
|
|
|||
|
|
@ -33,11 +33,11 @@ serverselection_launch() {
|
|||
i=$((i+1))
|
||||
res=$(ping -q $proto -c 1 -W $timeout $device $host 2>&1)
|
||||
ba=$(echo "$res" | grep "bad address")
|
||||
[ -n "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBF_DMMAP; break; }
|
||||
[ -n "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBF_DMMAP; return; }
|
||||
ba=$(echo "$res" | grep "unknown host")
|
||||
[ -n "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBF_DMMAP; break; }
|
||||
[ -n "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBF_DMMAP; return; }
|
||||
stc=$(echo "$res" | grep "received")
|
||||
[ -z "$stc" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=Error_Other; $UCI_COMMIT_BBF_DMMAP; break; }
|
||||
[ -z "$stc" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=Error_Other; $UCI_COMMIT_BBF_DMMAP; return; }
|
||||
times=$(echo "$res" | grep "min/avg/max")
|
||||
[ -z "$times" ] && break
|
||||
sc1=$(echo "$stc" | awk '{print $4}')
|
||||
|
|
|
|||
|
|
@ -21,7 +21,11 @@ traceroute_launch() {
|
|||
[ "$timeout" = "0" ] && timeout="1"
|
||||
i=-2
|
||||
rm -f /tmp/traceres
|
||||
traceroute -m $maxhop -w $timeout -q $cnt $proto $device $host $dsize 2>&1 >/tmp/traceres
|
||||
res=$(traceroute -m $maxhop -w $timeout -q $cnt $proto $device $host $dsize 2>&1 >/tmp/traceres)
|
||||
error_code="$?"
|
||||
ba=$(echo "$res" | grep "bad address")
|
||||
[ -n "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.traceroute.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBF_DMMAP; return; }
|
||||
[ "$error_code" != "0" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.traceroute.DiagnosticState=Error_Other; $UCI_COMMIT_BBF_DMMAP; return; }
|
||||
while read _ host ip time _; do
|
||||
[ "$host" = "*" ] && [ "$ip" = "*" ] && continue
|
||||
i=$((i+1))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue