Problem mit bash script
UnleashThebeast 10.02.2018 - 15:03 2088 3
UnleashThebeast
unsäglicher Prolet
|
//Edit: Weil ich ein Schoitl bin und beim Code zusammenkopieren nicht auf die Benamung der Variablen aufpass... Jesusmaria... Hallo, folgendes script: #!/usr/bin/bash
# DB connection
db_host=xxx
db_user=xxx
db_passwd=xxx
# DB database and table
db_name=xxx
db_table=xxx
##################################################
############## HERE BE DRAGONS THEN ##############
##################################################
# create timestamp for database
timestamp=`date +"%Y-%m-%d %H:%M:%S"`
# temp file holding output to snip it
user=$USER
if test -z $user; then
user=$USERNAME
fi
log=/tmp/$user/speedtest-mysql.log
# Local functions
str_extract() {
pattern=$1
# Extract
res=`grep "$pattern" $log | sed "s/$pattern//g"`
# Drop trailing ...
res=`echo $res | sed 's/[.][.][.]//g'`
# Trim
res=`echo $res | sed 's/^ *//g' | sed 's/ *$//g'`
echo $res
}
mkdir -p `dirname $log`
# run speedtest
/usr/local/bin/speedtest > $log
# parse the output
from=`str_extract "Testing from "`
from_ip=`echo $from | sed 's/.*(//g' | sed 's/).*//g'`
from=`echo $from | sed 's/ (.*//g'`
server=`str_extract "Hosted by "`
server_ping=`echo $server | sed 's/.*: //g'`
server=`echo $server | sed 's/: .*//g'`
server_dist=`echo $server | sed 's/.*\\[//g' | sed 's/\\].*//g'`
server=`echo $server | sed 's/ \\[.*//g'`
download=`str_extract "Download: "`
upload=`str_extract "Upload: "`
share_url=`str_extract "Share results: "`
# Send to MySQL
value1=`echo $ping | cut -d" " -f1`
value2=`echo $download | cut -d" " -f1`
value3=`echo $upload | cut -d" " -f1`
sql="INSERT INTO $db_table (timestamp,ping,download,upload,server) VALUES ('$timestamp','$ping','$download','$upload','$server');"
echo "$sql" | mysql -u$db_user -p$db_passwd -h$db_host $db_name
Hab hier ein Frankensteinmonster aus zusammenkopiertem code von ich glaub 5 Leuten. Soweit funktioniert auch fast alles, nur $ping liefert mir immer "0" in die DB. speedtest liefert mir den ping aber richtig mit :/. pi@speedtestpi:~ $ speedtest
Retrieving speedtest.net configuration...
Testing from UPC Austria (80.110.109.207)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by NEXT LAYER GmbH (Vienna) [6.40 km]: 33.5 ms
Testing download speed................................................................................
Download: 90.28 Mbit/s
Testing upload speed................................................................................................
Upload: 9.95 Mbit/s
pi@speedtestpi:~ $
hilfe?
Bearbeitet von UnleashThebeast am 10.02.2018, 15:12
|
Kirby
0x20
|
schon mal mit ping -qc1 $server 2>&1 | awk -F'/' 'END{ print (/^rtt/? "OK "$5" ms":"FAIL") }' probiert?
|
Longbow
Here to stay
|
du schreibst $ping in die db, deklarierst aber vorher $server_ping?
|
COLOSSUS
AdministratorGNUltra
|
Goenn' dir ein `set -u` ganz oben in deinem Script - dann verstirbt der Interpreter beim Aufloesen von undeklarierten Variablenbezeichnern. Das wird, schaetze ich, die schlimmsten Probleme darin offsichtlich machen.
|