Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 Kanal D va difuza serialul “...

Upgrade xiaomi mi11

securitate - acum se dau drept - ...

Farmacia Dr Max - Pareri / Sugest...
 

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,236
  • Î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,236
  • Î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

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

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