Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Noul format Jpegli iși propu...

Dade, dade

Parola la lock screen

Deparazitare externa pisici fara ...
 Seriale turcesti/coreene online H...

Merita un Termostat Smart pentru ...

Sfat achizitie MTB Devron Riddle

Problema mare cu parintii= nervi ...
 switch microtik

Permis categoria B la 17 ani

Sfaturi pentru pregatirea de eval...

Crapaturi placa
 cum imi accesez dosarul electroni...

Momentul Aprilie 1964

Sursa noua - zgomot ?

A fost lansat Ubuntu 24.04 LTS
 

Bash scripting - prea multi parametrii intr-un if

- - - - -
  • Please log in to reply
6 replies to this topic

#1
Sess

Sess

    Junior Member

  • Grup: Members
  • Posts: 68
  • Înscris: 20.01.2016
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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007

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
Sess

Sess

    Junior Member

  • Grup: Members
  • Posts: 68
  • Înscris: 20.01.2016

View Postdani.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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007

View PostSess, 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.


#5
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Pentru sănătatea mentală, recomand xonsh ca shell.

#6
Ion_de_la_Raion

Ion_de_la_Raion

    Guru Member

  • Grup: Senior Members
  • Posts: 20,434
  • Înscris: 28.08.2005
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
TangoDeltaRomeo

TangoDeltaRomeo

    New Member

  • Grup: Banned
  • Posts: 17
  • Înscris: 24.09.2017
sudo netstat -an | sed -n 's/^.*\(:[0-9]\+\).*$/\1/p' | sort -u

Doar 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
TangoDeltaRomeo

TangoDeltaRomeo

    New Member

  • Grup: Banned
  • Posts: 17
  • Înscris: 24.09.2017
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 2

Rezultatul 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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate