Skip to content

Commit 3f07633

Browse files
committed
undoing recent changes to quotations escaping for awk. I forgot about the entire purpose of parseAndPrint method
1 parent 1489fe5 commit 3f07633

File tree

1 file changed

+83
-74
lines changed

1 file changed

+83
-74
lines changed

app/server/linux_json_api.sh

Lines changed: 83 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22

33
_parseAndPrint() {
44
while read data; do
5-
echo -n "$data" | sed -r "s/'/\\\\'/g" | tr -d "\n";
5+
echo -n "$data" | sed -r "s/\"/\\\\\"/g" | tr -d "\n";
66
done;
77
}
88

99
arp_cache() {
1010
arpCommand=$(command -v arp)
1111

1212
result=$($arpCommand | awk 'BEGIN {print "["} NR>1 \
13-
{print "{ 'addr': '" $1 "', " \
14-
"'hw_type': '" $2 "', " \
15-
"'hw_addr.': '" $3 "', " \
16-
"'mask': '" $5 "' }, " \
13+
{print "{ \"addr\": \"" $1 "\", " \
14+
"\"hw_type\": \"" $2 "\", " \
15+
"\"hw_addr.\": \"" $3 "\", " \
16+
"\"mask\": \"" $5 "\" }, " \
1717
} \
1818
END {print "]"}' \
1919
| /bin/sed 'N;$s/},/}/;P;D')
@@ -26,25 +26,30 @@ arp_cache() {
2626
bandwidth() {
2727

2828
/bin/cat /proc/net/dev \
29-
| awk 'BEGIN {print "["} NR>2 {print "{ 'interface': '" $1 "'," \
30-
" 'tx': " $2 "," \
31-
" 'rx': " $10 " }," } END {print "]"}' \
29+
| awk 'BEGIN {print "["} NR>2 {print "{ \"interface\": \"" $1 "\"," \
30+
" \"tx\": " $2 "," \
31+
" \"rx\": " $10 " }," } END {print "]"}' \
3232
| /bin/sed 'N;$s/,\n/\n/;P;D' \
3333
| _parseAndPrint
3434
}
3535

3636
common_applications() {
3737
result=$(whereis php node mysql mongo vim python ruby java apache2 nginx openssl vsftpd make \
3838
| awk -F: '{if(length($2)==0) { installed="false"; } else { installed="true"; } \
39-
print "{ \"binary\": \"" $1 "\", \"location\": \"" $2 "\", \"installed\": \"installed\" },"}')
39+
print \
40+
"{ \
41+
\"binary\": \""$1"\", \
42+
\"location\": \""$2"\", \
43+
\"installed\": "installed" \
44+
},"}')
4045

4146
echo "[" ${result%?} "]" | _parseAndPrint
4247
}
4348

4449
cpu_info() {
4550

4651
result=$(/usr/bin/lscpu \
47-
| /usr/bin/awk -F: '{print "'"$1"': '"$2"'," } '\
52+
| /usr/bin/awk -F: '{print "\""$1"\": \""$2"\"," } '\
4853
)
4954

5055
echo "{" ${result%?} "}" | _parseAndPrint
@@ -54,12 +59,12 @@ cpu_intensive_processes() {
5459

5560
result=$(/bin/ps axo pid,user,pcpu,rss,vsz,comm --sort -pcpu,-rss,-vsz \
5661
| head -n 15 \
57-
| /usr/bin/awk 'BEGIN{OFS=":"} NR>1 {print "{ 'pid': " $1 \
58-
", 'user': '" $2 "'" \
59-
", 'cpu%': " $3 \
60-
", 'rss': " $4 \
61-
", 'vsz': " $5 \
62-
", 'cmd': '" $6 "'" "},"\
62+
| /usr/bin/awk 'BEGIN{OFS=":"} NR>1 {print "{ \"pid\": " $1 \
63+
", \"user\": \"" $2 "\"" \
64+
", \"cpu%\": " $3 \
65+
", \"rss\": " $4 \
66+
", \"vsz\": " $5 \
67+
", \"cmd\": \"" $6 "\"" "},"\
6368
}')
6469

6570
echo "[" ${result%?} "]" | _parseAndPrint
@@ -127,9 +132,9 @@ cron_history() {
127132

128133
result=$($grepCmd -m$numberOfLines CRON $cronLog \
129134
| awk '{ s = ""; for (i = 6; i <= NF; i++) s = s $i " "; \
130-
print "{'time' : '" $1" "$2" "$3 "'," \
131-
"'user' : '" $6 "'," \
132-
"'message' : '" $5" "gensub("'", "\\\\'", "g", s) "'" \
135+
print "{\"time\" : \"" $1" "$2" "$3 "\"," \
136+
"\"user\" : \"" $6 "\"," \
137+
"\"message\" : \"" $5" "gensub("\"", "\\\\\"", "g", s) "\"" \
133138
"},"
134139
}'
135140
)
@@ -150,12 +155,12 @@ current_ram() {
150155

151156
memInfo=`$catCmd $memInfoFile | $grepCmd 'MemTotal\|MemFree\|Buffers\|Cached'`
152157

153-
echo $memInfo | $awkCmd '{print "{ 'total': " ($2/1024) ", 'used': " ( ($2-($5+$8+$11))/1024 ) ", 'available': " (($5+$8+$11)/1024) " }" }' | _parseAndPrint
158+
echo $memInfo | $awkCmd '{print "{ \"total\": " ($2/1024) ", \"used\": " ( ($2-($5+$8+$11))/1024 ) ", \"available\": " (($5+$8+$11)/1024) " }" }' | _parseAndPrint
154159
}
155160

156161
disk_partitions() {
157162

158-
result=$(/bin/df -Ph | awk 'NR>1 {print "{'file_system': '" $1 "', 'size': '" $2 "', 'used': '" $3 "', 'avail': '" $4 "', 'used%': '" $5 "', 'mounted': '" $6 "'},"}')
163+
result=$(/bin/df -Ph | awk 'NR>1 {print "{\"file_system\": \"" $1 "\", \"size\": \"" $2 "\", \"used\": \"" $3 "\", \"avail\": \"" $4 "\", \"used%\": \"" $5 "\", \"mounted\": \"" $6 "\"},"}')
159164

160165
echo [ ${result%?} ] | _parseAndPrint
161166
}
@@ -167,12 +172,12 @@ docker_processes() {
167172
for i in $containers; do
168173
result="$result $(/usr/bin/docker top $i axo pid,user,pcpu,pmem,comm --sort -pcpu,-pmem \
169174
| head -n 15 \
170-
| /usr/bin/awk -v cnt="$i" 'BEGIN{OFS=":"} NR>1 {print "{ 'cname': '" cnt \
171-
"', 'pid': " $1 \
172-
", 'user': '" $2 "'" \
173-
", 'cpu%': " $3 \
174-
", 'mem%': " $4 \
175-
", 'cmd': '" $5 "'" "},"\
175+
| /usr/bin/awk -v cnt="$i" 'BEGIN{OFS=":"} NR>1 {print "{ \"cname\": \"" cnt \
176+
"\", \"pid\": " $1 \
177+
", \"user\": \"" $2 "\"" \
178+
", \"cpu%\": " $3 \
179+
", \"mem%\": " $4 \
180+
", \"cmd\": \"" $5 "\"" "},"\
176181
}')"
177182
done
178183

@@ -207,7 +212,7 @@ download_transfer_rate() {
207212
in_kbytes=$((in_bytes / 1024))
208213

209214
# convert transfer rate to KB
210-
json_output="$json_output '$basename': $in_kbytes"
215+
json_output="$json_output \"$basename\": $in_kbytes"
211216

212217
# if it is not the last line
213218
if [[ ! $interface == $last ]]
@@ -243,14 +248,14 @@ general_info() {
243248
uptime_seconds=$(/bin/cat /proc/uptime | awk '{print $1}')
244249
server_time=$(date)
245250

246-
echo "{ 'OS': '$os', 'Hostname': '$hostname', 'Uptime': ' $(displaytime ${uptime_seconds%.*}) ', 'Server Time': '$server_time' }" | _parseAndPrint
251+
echo "{ \"OS\": \"$os\", \"Hostname\": \"$hostname\", \"Uptime\": \" $(displaytime ${uptime_seconds%.*}) \", \"Server Time\": \"$server_time\" }" | _parseAndPrint
247252
}
248253

249254
io_stats() {
250255

251256
result=$(/bin/cat /proc/diskstats | /usr/bin/awk \
252257
'{ if($4==0 && $8==0 && $12==0 && $13==0) next } \
253-
{print "{ 'device': '" $3 "', 'reads': '"$4"', 'writes': '" $8 "', 'in_prog.': '" $12 "', 'time': '" $13 "'},"}'
258+
{print "{ \"device\": \"" $3 "\", \"reads\": \""$4"\", \"writes\": \"" $8 "\", \"in_prog.\": \"" $12 "\", \"time\": \"" $13 "\"},"}'
254259
)
255260

256261
echo [ ${result%?} ] | _parseAndPrint
@@ -271,10 +276,10 @@ ip_addresses() {
271276

272277
for item in $($ifconfigCmd | $grepCmd -oP "^[a-zA-Z0-9:]*(?=:)")
273278
do
274-
echo -n "{'interface' : '"$item"', 'ip' : '$( $ifconfigCmd $item | $grepCmd "inet" | $awkCmd '{match($0,"inet (addr:)?([0-9.]*)",a)}END{ if (NR != 0){print a[2]; exit}{print "none"}}')'}, "
279+
echo -n "{\"interface\" : \""$item"\", \"ip\" : \"$( $ifconfigCmd $item | $grepCmd "inet" | $awkCmd '{match($0,"inet (addr:)?([0-9.]*)",a)}END{ if (NR != 0){print a[2]; exit}{print "none"}}')\"}, "
275280
done
276281

277-
echo "{ 'interface': 'external', 'ip': '$externalIp' } ]" | _parseAndPrint
282+
echo "{ \"interface\": \"external\", \"ip\": \"$externalIp\" } ]" | _parseAndPrint
278283
}
279284

280285
load_avg() {
@@ -289,14 +294,14 @@ load_avg() {
289294
numberOfCores=1
290295
fi
291296

292-
result=$($catCmd /proc/loadavg | $awkCmd '{print "{ '1_min_avg': " ($1*100)/'$numberOfCores' ", '5_min_avg': " ($2*100)/'$numberOfCores' ", '15_min_avg': " ($3*100)/'$numberOfCores' "}," }')
297+
result=$($catCmd /proc/loadavg | $awkCmd '{print "{ \"1_min_avg\": " ($1*100)/'$numberOfCores' ", \"5_min_avg\": " ($2*100)/'$numberOfCores' ", \"15_min_avg\": " ($3*100)/'$numberOfCores' "}," }')
293298

294299
echo ${result%?} | _parseAndPrint
295300
}
296301

297302
logged_in_users() {
298303

299-
result=$(COLUMNS=300 /usr/bin/w -h | /usr/bin/awk '{print "{'user': '" $1 "', 'from': '" $3 "', 'when': '" $4 "'},"}')
304+
result=$(COLUMNS=300 /usr/bin/w -h | /usr/bin/awk '{print "{\"user\": \"" $1 "\", \"from\": \"" $3 "\", \"when\": \"" $4 "\"},"}')
300305

301306
echo [ ${result%?} ] | _parseAndPrint
302307
}
@@ -305,7 +310,7 @@ memcached() {
305310
echo "stats" \
306311
| /bin/nc -w 1 127.0.0.1 11211 \
307312
| /bin/grep 'bytes' \
308-
| /usr/bin/awk 'BEGIN {print "{"} {print "'" $2 "': " $3 } END {print "}"}' \
313+
| /usr/bin/awk 'BEGIN {print "{"} {print "\"" $2 "\": " $3 } END {print "}"}' \
309314
| /usr/bin/tr '\r' ',' \
310315
| /bin/sed 'N;$s/,\n/\n/;P;D' \
311316
| _parseAndPrint
@@ -314,7 +319,7 @@ memcached() {
314319
memory_info() {
315320

316321
/bin/cat /proc/meminfo \
317-
| /usr/bin/awk -F: 'BEGIN {print "{"} {print "'" $1 "': '" $2 "'," } END {print "}"}' \
322+
| /usr/bin/awk -F: 'BEGIN {print "{"} {print "\"" $1 "\": \"" $2 "\"," } END {print "}"}' \
318323
| /bin/sed 'N;$s/,\n/\n/;P;D' \
319324
| _parseAndPrint
320325
}
@@ -331,7 +336,7 @@ network_connections() {
331336
| $awkCmd 'NR>2 {print $5}' \
332337
| $sortCmd \
333338
| $uniqCmd -c \
334-
| $awkCmd 'BEGIN {print "["} {print "{ 'connections': " $1 ", 'address': '" $2 "' }," } END {print "]"}' \
339+
| $awkCmd 'BEGIN {print "["} {print "{ \"connections\": " $1 ", \"address\": \"" $2 "\" }," } END {print "]"}' \
335340
| $sedCmd 'N;$s/},/}/;P;D' \
336341
| _parseAndPrint
337342
}
@@ -363,7 +368,7 @@ ping() {
363368
| while read output
364369
do
365370
singlePing=$($pingCmd -qc 2 $output \
366-
| $awkCmd -F/ 'BEGIN { endLine="}," } /^rtt/ { if ('$numOfLinesInConfig'==1){endLine="}"} print "{" "'host': ''$output'', 'ping': " $5 " " endLine }' \
371+
| $awkCmd -F/ 'BEGIN { endLine="}," } /^rtt/ { if ('$numOfLinesInConfig'==1){endLine="}"} print "{" "\"host\": \"'$output'\", \"ping\": " $5 " " endLine }' \
367372
)
368373
numOfLinesInConfig=$(($numOfLinesInConfig-1))
369374
result=$result$singlePing
@@ -390,15 +395,15 @@ pm2_stats() {
390395
#don't process last 2 lines
391396
json=$( echo "$data" | tail -n +4 | head -n +2 \
392397
| awk '{print "{"}\
393-
{print "'appName':'" $2 "',"} \
394-
{print "'id':'" $4 "',"} \
395-
{print "'mode':'" $6 "',"} \
396-
{print "'pid':'" $8 "',"}\
397-
{print "'status':'" $10 "',"}\
398-
{print "'restart':'" $12 "',"}\
399-
{print "'uptime':'" $14 "',"}\
400-
{print "'memory':'" $16 $17 "',"}\
401-
{print "'watching':'" $19 "'"}\
398+
{print "\"appName\":\"" $2 "\","} \
399+
{print "\"id\":\"" $4 "\","} \
400+
{print "\"mode\":\"" $6 "\","} \
401+
{print "\"pid\":\"" $8 "\","}\
402+
{print "\"status\":\"" $10 "\","}\
403+
{print "\"restart\":\"" $12 "\","}\
404+
{print "\"uptime\":\"" $14 "\","}\
405+
{print "\"memory\":\"" $16 $17 "\","}\
406+
{print "\"watching\":\"" $19 "\""}\
402407
{print "},"}')
403408
#make sure to remove last comma and print in array
404409
echo "[" ${json%?} "]" | _parseAndPrint
@@ -412,21 +417,26 @@ ram_intensive_processes() {
412417

413418
result=$(/bin/ps axo pid,user,pmem,rss,vsz,comm --sort -pmem,-rss,-vsz \
414419
| head -n 15 \
415-
| /usr/bin/awk 'NR>1 {print "{ 'pid': " $1 \
416-
", 'user': '" $2 \
417-
"', 'mem%': " $3 \
418-
", 'rss': " $4 \
419-
", 'vsz': " $5 \
420-
", 'cmd': '" $6 \
421-
"'},"}')
420+
| /usr/bin/awk 'NR>1 {print "{ \"pid\": " $1 \
421+
", \"user\": \"" $2 \
422+
"\", \"mem%\": " $3 \
423+
", \"rss\": " $4 \
424+
", \"vsz\": " $5 \
425+
", \"cmd\": \"" $6 \
426+
"\"},"}')
422427

423428
echo [ ${result%?} ] | _parseAndPrint
424429
}
425430

426431
recent_account_logins() {
427432

428433
result=$(/usr/bin/lastlog -t 365 \
429-
| /usr/bin/awk 'NR>1 { print "{ \"user\": \"" $1 "\", " "\"ip\": \"" $3 "\"," "\"date\": \"" $5" "$6" "$7" "$8" "$9 "\" }" }'
434+
| /usr/bin/awk 'NR>1 {\
435+
print "{ \
436+
\"user\": \"" $1 "\", \
437+
\"ip\": \"" $3 "\","" \
438+
\"date\": \"" $5" "$6" "$7" "$8" "$9 "\"},"
439+
}'
430440
)
431441
echo [ ${result%?} ] | _parseAndPrint
432442
}
@@ -445,9 +455,8 @@ redis() {
445455

446456
result=$($redisCommand INFO \
447457
| grep 'redis_version\|connected_clients\|connected_slaves\|used_memory_human\|total_connections_received\|total_commands_processed' \
448-
| awk -F: '{print "'" $1 "':" "'" $2 "'" }' \
449-
| tr '\r' '"'
450-
| tr '\n' ','
458+
| awk -F: '{print "\"" $1 "\":" "\"" $2 }' \
459+
| tr '\r' '"' | tr '\n' ','
451460
)
452461
echo { ${result%?} } | _parseAndPrint
453462
}
@@ -530,15 +539,15 @@ scheduled_crons() {
530539

531540
$catCmd "${temp}" \
532541
| awk 'BEGIN {print "["} \
533-
{print "{ 'min': '" $1 \
534-
"', 'hrs': '" $2 "', " \
535-
" 'day': '" $3 "', " \
536-
" 'month': '" $4 "', " \
537-
" 'wkday': '" $5 "', " \
538-
" 'user': '" $6 "', " \
539-
" 'CMD': '"} \
540-
{for(i=7;i<=NF;++i) printf("%s ", gensub("'", "\\\\'", "g", $i) ) } \
541-
{print "' " \
542+
{print "{ \"min\": \"" $1 \
543+
"\", \"hrs\": \"" $2 "\", " \
544+
" \"day\": \"" $3 "\", " \
545+
" \"month\": \"" $4 "\", " \
546+
" \"wkday\": \"" $5 "\", " \
547+
" \"user\": \"" $6 "\", " \
548+
" \"CMD\": \""} \
549+
{for(i=7;i<=NF;++i) printf("%s ", gensub("\"", "\\\\\"", "g", $i) ) } \
550+
{print "\" " \
542551
"}," } \
543552
END {print "]"}' \
544553
| $sedCmd 'N;$s/,\n//;P;D' \
@@ -558,7 +567,7 @@ swap() {
558567
if [ "$swapLineCount" -gt 1 ]; then
559568

560569
result=$($catCmd /proc/swaps \
561-
| $awkCmd 'NR>1 {print "{ 'filename': '" $1"', 'type': '"$2"', 'size': '"$3"', 'used': '"$4"', 'priority': '"$5"'}," }'
570+
| $awkCmd 'NR>1 {print "{ \"filename\": \"" $1"\", \"type\": \""$2"\", \"size\": \""$3"\", \"used\": \""$4"\", \"priority\": \""$5"\"}," }'
562571
)
563572

564573
echo [ ${result%?} ] | _parseAndPrint
@@ -596,7 +605,7 @@ upload_transfer_rate() {
596605
out_kbytes=$((out_bytes / 1024))
597606

598607
# convert transfer rate to KB
599-
json_output="$json_output '$basename': $out_kbytes"
608+
json_output="$json_output \"$basename\": $out_kbytes"
600609

601610
# if it is not the last line
602611
if [[ ! $interface == $last ]]
@@ -611,18 +620,18 @@ upload_transfer_rate() {
611620
}
612621

613622
user_accounts() {
614-
## print "{ 'type':" "'" userType "'" ", 'user':" "'" $1 "', 'home': '" $6 "' }," }'
623+
615624
result=$(/usr/bin/awk -F: '{ \
616625
if ($3<=499){userType="system";} \
617626
else {userType="user";} \
618-
print "{\"type\":\"" userType "\", \"user\":\"" $1 "\", \"home\":\"" $6 "\"},\n" }' < /etc/passwd
627+
print "{ \"type\": \"" userType "\"" ", \"user\": \"" $1 "\", \"home\": \"" $6 "\" }," }' < /etc/passwd
619628
)
620629

621630
length=$(echo ${#result})
622631

623-
# if [ $length -eq 0 ]; then
624-
result=$(getent passwd | /usr/bin/awk -F: '{ if ($3<=499){userType="system";} else {userType="user";} print "{\"type\":\"" userType "\", \"user\":\"" $1 "\", \"home\":\"" $6 "\"},\n" }')
625-
# fi
632+
if [ $length -eq 0 ]; then
633+
result=$(getent passwd | /usr/bin/awk -F: '{ if ($3<=499){userType="system";} else {userType="user";} print "{ \"type\": \"" userType "\"" ", \"user\": \"" $1 "\", \"home\": \"" $6 "\" }," }')
634+
fi
626635

627636
echo [ ${result%?} ] | _parseAndPrint
628637
}

0 commit comments

Comments
 (0)