Bash scripting - prea multi parametrii intr-un if
Last Updated: Sep 24 2017 18:45, Started by
Sess
, Sep 23 2017 11:08
·
0
#1
Posted 23 September 2017 - 11:08
Salut,
Am urmatorul script: #!/bin/bash counter=0 until [ -z `netstat -an | grep $counter` ]; do echo "$counter" ((counter++)) done Cand rulez, primesc o eroare la linia 5, la until [ -z `netstat -an | grep $counter` ]; do, mai exact: ./script.sh: line 5: [: too many arguments Ideea scriptului este sa afiseze in consola porturile existente. In momentul in care nu mai exista porturi (la 65535 se opreste) iese din bucla. |
#2
Posted 23 September 2017 - 11:16
Quote
until [ -z "$(netstat -an | grep $counter)" ]; do Dar ideea e foarte proasta... apelezi netstat de 65535 de ori, cand l-ai putea apela o singura data. |
#3
Posted 23 September 2017 - 11:26
dani.user, on 23 septembrie 2017 - 11:16, said:
Dar ideea e foarte proasta... apelezi netstat de 65535 de ori, cand l-ai putea apela o singura data. Cum anume? Si punctual, `netstat -an | grep $counter` (sau orice comanda cu pipe) de ce are prea multe argumente pentru until/while/if? Edited by Sess, 23 September 2017 - 11:26. |
#4
Posted 23 September 2017 - 13:35
Sess, on 23 septembrie 2017 - 11:26, said:
Cum anume? netstat -an | grep -o ':[0-9]\+' | grep -o '[0-9]\+' | sort -un Cauta :numar prin ce apare in rezultatul de la netstat, scoate : din fata (asta ma astept sa se poata face si dintr-un singur apel la grep) si apoi afiseaza numerele fara duplicate, in ordine sortata. Apoi te gandesti ca porturile pot fi ale unei conexiuni exitente (sursa si destinatie) sau pe care asculta un proces, si ca sigur te intereseaza ceva mai precis decat toate la gramada. Edited by dani.user, 23 September 2017 - 13:47. |
#6
Posted 23 September 2017 - 14:38
Prea multi parametri in script si prea multi de "i" in parametri (vezi titlu).
Edited by Ion_de_la_Raion, 23 September 2017 - 14:38. |
#7
Posted 24 September 2017 - 18:45
sudo netstat -an | sed -n 's/^.*\(:[0-9]\+\).*$/\1/p' | sort -uDoar ca o sa returneze si : din fata portului. PS: Afiseaza doar remote ports, nu afiseaza porturile locale. Nu stiu acum initiatorul ce porturi doreste sa afle. Cu ceva noroc se poate face treaba asta si pentru porturile locale. LE: Si versiunea cu porturile locale sudo ss -anl '( sport >= 0 and sport <= 65535 )' | sed -n 's/^.*\(:[0-9]\+\).*$/\1/p' | sort -u Edited by TangoDeltaRomeo, 24 September 2017 - 19:03. |
#8
Posted 24 September 2017 - 22:06
ss -tupn | awk 'NR > 1 {gsub(/.*:/,"",$5); print $5}'Sau mai simplu daca pe initiator il intereseaza cate conexiuni locale are deschise: ss -s | awk 'NR > 1 {gsub(/.* /,"",$2); print $2}' | tail -n 5 | head -n 2Rezultatul este, pe prima linie numarul total de conexiuni UDP si pe linia 2 numarul total de conexiuni TCP. $(Numarul de conexiuni) = $(numarul de porturi folosite). Cata vreme $(numarul de conexiuni) < 65535 => initiatorul mai are la dispozitie $(65535 - numar de conexiuni) porturi nefolosite |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users