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");
|
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)
|
void set_diagnostics_interface_option(struct dmctx *ctx, char *sec_name, char *value)
|
||||||
{
|
{
|
||||||
char *linker = NULL;
|
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 set_diagnostics_option(char *sec_name, char *option, char *value);
|
||||||
void reset_diagnostic_state(char *sec_name);
|
void reset_diagnostic_state(char *sec_name);
|
||||||
void init_diagnostics_operation(char *sec_name, char *operation_path);
|
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);
|
void set_diagnostics_interface_option(struct dmctx *ctx, char *sec_name, char *value);
|
||||||
int start_upload_download_diagnostic(int diagnostic_type);
|
int start_upload_download_diagnostic(int diagnostic_type);
|
||||||
int bbf_upload_log(const char *url, const char *username, const char *password,
|
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;
|
char *route_hops_errorcode = NULL;
|
||||||
int i = 1;
|
int i = 1;
|
||||||
|
|
||||||
init_diagnostics_operation("RouteHops", TRACEROUTE_PATH);
|
|
||||||
init_diagnostics_operation("traceroute", TRACEROUTE_PATH);
|
init_diagnostics_operation("traceroute", TRACEROUTE_PATH);
|
||||||
|
remove_unused_diagnostic_sections("RouteHops");
|
||||||
|
|
||||||
char *host = dmjson_get_value((json_object *)value, 1, "Host");
|
char *host = dmjson_get_value((json_object *)value, 1, "Host");
|
||||||
if (host[0] == '\0')
|
if (host[0] == '\0')
|
||||||
|
|
|
||||||
|
|
@ -771,8 +771,8 @@ static int operate_DNSDiagnostics_NSLookupDiagnostics(char *refparam, struct dmc
|
||||||
char *nslookup_response_time[2] = {0};
|
char *nslookup_response_time[2] = {0};
|
||||||
int i = 1;
|
int i = 1;
|
||||||
|
|
||||||
init_diagnostics_operation("NSLookupResult", NSLOOKUP_PATH);
|
|
||||||
init_diagnostics_operation("nslookup", NSLOOKUP_PATH);
|
init_diagnostics_operation("nslookup", NSLOOKUP_PATH);
|
||||||
|
remove_unused_diagnostic_sections("NSLookupResult");
|
||||||
|
|
||||||
char *hostname = dmjson_get_value((json_object *)value, 1, "HostName");
|
char *hostname = dmjson_get_value((json_object *)value, 1, "HostName");
|
||||||
if (hostname[0] == '\0')
|
if (hostname[0] == '\0')
|
||||||
|
|
|
||||||
|
|
@ -18,54 +18,49 @@ nslookup_launch() {
|
||||||
[ -e "${LOG_FILE}" ] && rm ${LOG_FILE}
|
[ -e "${LOG_FILE}" ] && rm ${LOG_FILE}
|
||||||
while [ $i -lt "$cnt" ]; do
|
while [ $i -lt "$cnt" ]; do
|
||||||
i=$((i+1))
|
i=$((i+1))
|
||||||
time1=$(date +%s)
|
nslookup -debug $hostname $dnsserver >>${LOG_FILE} 2>&1
|
||||||
if [ -z "$dnsserver" ]; then
|
error_code="$?"
|
||||||
nslookup "$hostname" >>${LOG_FILE} 2>&1
|
nxd=$(cat ${LOG_FILE} | grep "NXDOMAIN")
|
||||||
else
|
[ -n "$nxd" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.nslookup.DiagnosticState=Error_DNSServerNotResolved; $UCI_COMMIT_BBF_DMMAP; return; }
|
||||||
nslookup "$hostname" "$dnsserver" >>${LOG_FILE} 2>&1
|
[ "$error_code" != "0" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.nslookup.DiagnosticState=Error_Other; $UCI_COMMIT_BBF_DMMAP; return; }
|
||||||
fi
|
|
||||||
time2=$(date +%s)
|
|
||||||
timeresponse=$(($(($time2-$time1))*1000))
|
|
||||||
echo "ResponseTime: $timeresponse" >>${LOG_FILE}
|
|
||||||
echo "++++++++++++++++++++++++++++++" >>${LOG_FILE}
|
echo "++++++++++++++++++++++++++++++" >>${LOG_FILE}
|
||||||
done
|
done
|
||||||
|
|
||||||
while IFS= read line; do
|
while IFS= read line; do
|
||||||
[ -z "$line" ] && continue;
|
[ -z "$line" ] && continue;
|
||||||
server=$(echo "$line" | tr -d '\t' | tr -d ' ' | grep "Server:" | awk -F':' '{print $2}')
|
server=$(echo "$line" | tr -d '\t' | tr -d ' ' | grep "Server:" | awk -F':' '{print $2}')
|
||||||
|
|
||||||
if [ -n "$server" ] && [ "$server" = "0.0.0.0" ]; then
|
if [ -n "$server" ] && [ "$server" = "0.0.0.0" ]; then
|
||||||
status="Error_DNSServerNotAvailable"
|
status="Error_DNSServerNotAvailable"
|
||||||
continue
|
continue
|
||||||
elif [ -n "$server" ]; then
|
elif [ -n "$server" ]; then
|
||||||
dns_server_ip=$server
|
dns_server_ip=$server
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
var=$(echo "$line" | tr -d '\t' | tr -d ' ' | grep "Name:" | awk -F':' '{print $2}')
|
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; }
|
[ -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 ' ')
|
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; }
|
[ -n "$var" ] && { [ -z "$address" ] && address="$var" || address="$address,$var"; continue; }
|
||||||
|
|
||||||
var=$(echo "$line" | tr -d '\t' | tr -d ' ' | grep "ResponseTime:" | awk -F':' '{print $2}')
|
var=$(echo "$line" | grep "completed" | awk -F'in' '{print $2}' | tr -d 'ms:\t ')
|
||||||
[ -n "$var" ] && { ResponseTime=$var; continue; }
|
[ -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 '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 'Non-authoritative' >/dev/null 2>&1 && { AnswerType="NonAuthoritative"; continue; }
|
|
||||||
|
|
||||||
if echo "$line" | grep '++++++++++++++++++++++' >/dev/null 2>&1; then
|
if echo "$line" | grep '++++++++++++++++++++++' >/dev/null 2>&1; then
|
||||||
$UCI_ADD_BBF_DMMAP dmmap_diagnostics NSLookupResult
|
$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].Status="$status"
|
||||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].AnswerType="$AnswerType"
|
$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].HostNameReturned="$HostNameReturned"
|
||||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].IPAddresses="$address"
|
$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].DNSServerIP="$dns_server_ip"
|
||||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].ResponseTime="$ResponseTime"
|
$UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].ResponseTime="$ResponseTime"
|
||||||
j=$((j+1))
|
j=$((j+1))
|
||||||
address=""
|
address=""
|
||||||
fi
|
fi
|
||||||
done <${LOG_FILE}
|
done <${LOG_FILE}
|
||||||
rm -f ${LOG_FILE}
|
rm -f ${LOG_FILE}
|
||||||
$UCI_SET_BBF_DMMAP dmmap_diagnostics.nslookup.SuccessCount=$success_count
|
$UCI_SET_BBF_DMMAP dmmap_diagnostics.nslookup.SuccessCount=$success_count
|
||||||
|
|
|
||||||
|
|
@ -33,11 +33,11 @@ serverselection_launch() {
|
||||||
i=$((i+1))
|
i=$((i+1))
|
||||||
res=$(ping -q $proto -c 1 -W $timeout $device $host 2>&1)
|
res=$(ping -q $proto -c 1 -W $timeout $device $host 2>&1)
|
||||||
ba=$(echo "$res" | grep "bad address")
|
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")
|
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")
|
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")
|
times=$(echo "$res" | grep "min/avg/max")
|
||||||
[ -z "$times" ] && break
|
[ -z "$times" ] && break
|
||||||
sc1=$(echo "$stc" | awk '{print $4}')
|
sc1=$(echo "$stc" | awk '{print $4}')
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,11 @@ traceroute_launch() {
|
||||||
[ "$timeout" = "0" ] && timeout="1"
|
[ "$timeout" = "0" ] && timeout="1"
|
||||||
i=-2
|
i=-2
|
||||||
rm -f /tmp/traceres
|
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
|
while read _ host ip time _; do
|
||||||
[ "$host" = "*" ] && [ "$ip" = "*" ] && continue
|
[ "$host" = "*" ] && [ "$ip" = "*" ] && continue
|
||||||
i=$((i+1))
|
i=$((i+1))
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue