Archives

10 Comenzi diverse în terminal

1. Pentru a vedea toate hosturile virtuale configurate în Apache2

$ /usr/sbin/apache2ctl -S 2>&1 | perl -ne 'm@.*port\s+([0-9]+)\s+\w+\s+(\S+)\s+\((.+):.*@ && do { print "$2:$1\n\t$3\n"; $root = qx{grep DocumentRoot $3}; $root =~ s/^\s+//; print "\t$root\n" };'

2. Cautare pe Google.com – pentru funcționare sunt necesare pachetele curl și html2text

$ curl -A Mozilla http://www.google.com/search?q=textdecautat |html2text -width 80

3. Actualizează statusul pe Twitter

$ curl -u utilizator:parola -d status="Mesaj postat din consola" http://twitter.com/statuses/update.xml

4. Afișează o histogramă a celor mai încărcate minute dintr-un log de acces apache:

$ cat /var/log/apache2/access.log | awk '{print substr($0,0,12)}' | uniq -c | sort -nr | awk '{printf("\n%s ",$0) ; for (i = 0; i<$1 ; i++) {printf("*")};}'

5. Descarcă lista de ip-uri isc.sans.org și o adaugă la coada iptables

curl -s http://isc.sans.org/sources.html|grep "ipinfo.html"|awk -F"ip=" {'print $2'}|awk -F"\"" {'print $1'}|xargs -n1 sudo iptables -A OUTPUT -j DROP -d > 2&>1

6. Ce fișiere/directoare îmi ocupă spatiul pe disc

$ du -aB1m|awk '$1 >= 100'

7. Afișează toate IP-urile

$ ifconfig | awk '/ddr:[0-9]/ {sub(/addr:/, ""); print $2}'

8. Afișează toate conexiunile active la un gateway

$ cat /proc/net/ip_conntrack | grep ESTABLISHED | grep -c -v ^#

9. Caută fișiere duplicate după MD5 (și șterge hash-ul final) – operațiune de durată

$ find -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 33 | cut -c 35-

10. Afișează evenimentele din calendarul personal ținut în Google Calendar

$ wget -q -O - 'URL/full?orderby=starttime&singleevents=true&start-min=2009-06-01&start-max=2009-07-31' | perl -lane '@m=$_=~m/(.+?)

Unde trebuie înlocuit URL adresa perspmală privată/publică a url-ului în format XML, și data pentru care se dorește vizualizarea în format YYYY-mm-dd

Numere auto UNIX/Linux

Deși am căutat (puțin e adevarat) numere auto care să arate pasiunea utilizatorilor pentru sisteme de operare/aplicații, altele decât din zona UNIX/Linux… nu am prea găsit.

1. Utilizator fericit

got-unix

Fotografie de la: stickman.org

2. I Do Unix

idounix

Fotografie de la: gelkote.net

3. UID 0

uid0

Fotografie de la: meanasspenguin.org

4. GNU linux

gnu-linux

Fotografie de la: LarryTheOpenSourceGuy

5. Ubuntu

ubuntu

Fotografie de la: graysky

6. su root

su-root

Fotografie de la: Tony Webster

7. Linuks

linuks

Fotografie de la: P0z3r

8. Linux Geek

lnxgeek

Fotografie de la: AdamVandenberg

9. Sendmail

sndmail

Fotografie de la: blmurch

10. rm -rf *

rm-rf

Fotografie de la: stealthsettings.com

11. Alt utilizator fericit 🙂

john-hall

Încearcă software liber!

Începând din această săptămână, am dat curs invitației de a scrie și pe incearca.softwareliber.ro.

Împreună cu mulțumirile adresate echipei, pentru ocazia de a scrie în cadrul acestui proiect, vreau să invit pe toți cei care pot si doresc să contribuie cu articole să scrie. Nu trebuie să fie lucrări de diplomă, nu trebuie să fie articole geniale, ci să fie articole care pot ajuta pe alții să răzbească în lupta cu computadoarele 🙂 Așa că, orice articol, despre aplicații software libere este binevenit.

Proiectul “Încearcă software liber” este rezultatul muncii colaborative a Grupului pentru software liber și conține prezentări ale programelor libere, descrise de către cei care le folosesc și le iubesc. Scopul acestui proiect este de a promova software-ul liber într-o manieră prietenoasă și practică. Chiar dacă majoritatea programelor libere rulează pe sisteme GNU/Linux sau *BSD, aici vor fi prezentate aplicații indiferent de platforma pe care rulează.

Voi posta și aici pe blog invitații de a citi articolele de pe pagina incearca.softwareliber.ro, de câte ori vor apărea articole noi.

Săptămâna asta am scris deja despre CrunchyFrog; articolul poate fi citit aici.

Evită ca emailurile trimise dintr-o aplicație PHP să fie respinse ca SPAM

Pentru a ț-șpea oară, azi, m-am lovit de o problemă a cărei rezolvare tot se lăsa așteptată.

Emailurile trimise din diverse aplicații web scrise în PHP în principal (fie ele bloguri, newslettere sau de prin site-uri etc.), nu ajung la destinatarii cu căsuțe poștale la comcast.net, aol.com, netfirms.com și încă câțiva provideri măricei din lume, fiind rejectate în special cu mesaje de eroare de DNS.

La verificări, înregistrările de DNS sunt ok, rDNS ok, înregistrările SPF la locul lor, dar, confom zicalei “benzinește, scânteiește… nu pornește”.

Dacă pentru serverele de Windows nu am avut suficient timp să caut o soluție, pe serverele de linux azi am reușit să găsesc o soluție, care până acum funcționează (deci, o perioadă nu va fi nici măcar stearsă de praf).

Soluția ne e chilit (parcă ăsta te ajuta când nimeni altcineva nu voia), ci o completare in php.ini, la sendmail_path, am adăugat un from,linia cu pricina arată acuma așa:

sendmail_path = /usr/sbin/sendmail -t -i -f adresa@servermail.com;

Dupa asta, am restartat serverul de web, în cazul de față apache, iar după ce am mai golit și emailurile din coada de așteptare, am sezizat că nu mai am mailuri rejectate.

Pentru golirea cozii de așteptare a exim (asta am găsit pe acolo), am făcut un scriptuleț, inspirat din lista de discuții de la exim.


#! /bin/sh
PATH=$PATH:/usr/exim/bin
export PATH
exim -bpru|awk {'print $3'}|xargs exim -Mrm

Acum sunt tare curios care va fi de acum încolo rata de respingere a emailurilor de pe acest server cel puțin.

Ce am mai sesizat azi, luptându-mă cu serverul ăsta: de când folosesc majoritar Ubuntu, m-am dezobișnuit de a căuta prin diferite locuri fișierele de configurare… Mi se pare mult mai ok să găsesc totul în /etc….

Utilitar pentru download rapid, multi-protocol și multi-sursă – aria2

Astăzi, am descoperit încă o aplicație mică si foarte utilă – aria2.

Ce-l face să fie așa interesant? Faptul că știe să descarce un fișier, în același timp din diferite surse (HTTP/HTTPS, FTP, BiTtorrent).

Altă facilitate bună este că știe să descarce concurențial dintr-o lista de adrese introduse de user.

Cu aceste facilități, aria2 folosește la maximum performanțele conexiunii, descărcând din toate sursele pe care le găseste.

Configurarea inițială caută să descarce un fișier utilizând 5 surse simultane. Sigur, această setare poate fi modificată adaugând parametrul “-s” (dacă vrem să folosească o singură conexiune de exemplu parametrul suplimentar va fi “-s1”).

Alt lucru interesant este felul în care știe să reia descărcarea unui fișier : este suficient să relansăm în același director procesul, cu aceiași parametri și știe să continue de unde a rămas.

În Ubuntu se instalează simplu cu “sudo apt-get install aria2”

Se poate instala în orice altă distribuție Linux.

Exemple de utilizare:

– 1 fișier dintr-o sursă:

aria2c http://server/fisier.ext

– 1 fișier din mai multe surse:

aria2c -s2 http://server1/fisier.ext http://server2/fisier.ext

– descărcare din surse multiple (FTP + HTTP):

aria2c http://server1/fisier.ext ftp://server2/fisier.ext

Descărcarea poate fi pusă în pauză în orice moment cu Ctrl+C.

WebEx + Firefox 3 în Ubuntu 8.10

Pe ziua de azi, printre activitățile mele s-a nimerit să se întâmple si o configurare de server Apache via WebEx, pe o mașină care nu are acces la net (un server local al unui client care furnizează informații doar in LAN).

Așa că mă pun eu frumos și imi fac incă un cont (pentru că bineînteles uitasem parola de la ultima mea experiență WebEx) iar când sa fac conexiunea de test…. surprize, surprize…. Firefox crapă într-o fericire… fără mesaje de eroare, fără să aibă bunul simț să spună ce și cum se întâmplă.

Într-un final, am găsit o mulțime de variante de a face să funcționeze, o sursă foarte bună fiind aici: http://ubuntuforums.org/archive/index.php/t-502973.html….

De la lume adunate și-napoi la lume date:) asta e ceea ce a rămas în picioare pentru mine, din păcate, se pare ca e puțin probabil să funcționeze în versiunile pe 64bit, cel puțin așa reiese din posturile găsite pe net.

1. sudo apt-get install libstdc++5 sun-java6-plugin
2. Am editat ~/.profile și am adăugat următoarele două linii:
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.66
export PATH=$JAVA_HOME/bin:$PATH
3. Am restartat X-ul cu ctrl+alt+backspace

După toate astea, am reușit să particip la conferința WebEx și să îmi rezolv problemele remote acolo.

Constatări de final (nu ma lasă sufletul să nu le fac):

1 – NU mă așteptam ca cei de la Cisco sa nu ofere suport pentru Linux in aplicațiile lor.

2 – Speram ca dupa atâția ani de zile de participări pe forumuri, unii useri să înteleagă faptul că dacă cineva postează o problemă cu o aplicatie, indiferent cât de exotică este aceasta, indiferent dacă parerea mea personală este pro sau contra acelei aplicații – un răspuns util este să îi spui dacă și eventual cum poate omul să scape de problemă nu să ii dai o listă cu aplicații similare care iți plac sau nu sau care “rulez frate”. Nu de alta, dar asta ajunge sa semene a Microsoft (toți să folosească aceeasi aplicație în același fel pentru a putea deveni productivi.) ori, tocmai asta cred că este esența și spiritul Linux – să poti folosi mai multe moduri / aplicații pentru a-ți atinge ținta și a-ți rezolva problema.


Cum se schimbă fusul orar in Linux eventual scriptat

Azi, un amic de-al meu a avut o problemă interesantă de rezolvat, și anume să schimbe fusul orar si ora pe mai multe servere pe care le administrează la firma unde prestează.

Știind ca în ultima vreme a instalat si el Ubuntu, răspunsul a fost scurt:

 sudo dpkg-reconfigure tzdata 

Dar, răspunsul lui s-a legat de anumite zone ale corpului și niște rude, mai mult sau mai puțin apropiate, pentru că:

  • are mai multe servere si vrea să automatizeze treaba asta,
  • Ubuntu nu este încă instalat decât pe 3 servere, are Slack și SuSE etc., și lista de motive poate continua.

Să începem cu începutul:


cp /etc/localtime /etc/localtime.old

Apoi la pasul următor, facem o legătura simbolică din fișierul de zonă care va deveni zonă de bază:


ln -sf /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime

Apoi, pasul 3 să punem setarea de zona in /etc/sysconfig/clock “Europe/Dublin”

Iar la sfârșit, sincronizarea si setarea orei:


/sbin/hwclock --systohc

ntpdate europe.pool.ntp.org

Aceste comenzi trimise prin SSH, au rezolvat până la urmă problema, totul fiind adunat la final într-un singur script care a fost rulat pe toate serverele.

Acum nu mai rămâne decât să încep ușor ușor să refac scriptul si la mine pentru schimbarea de oră care va avea loc și la noi sâmbătă noaptea.

Scurtă listă de comenzi în Ubuntu (mai mult sau mai puțin utile)

Aruncând o privire la comenzile pe care l-am executat in ultima perioadă, mi-a venit ideea de a le strânge la un loc pe cele mai des utilizate. Deși personal folosesc Gnome, am căutat să pun în listă și echivalentul pentru KDE. Dacă nu se potrivesc, aștept cu interes corecții.

Așadar, pe categorii, lista arată cam așa:

Comenzi care necesită / oferă privilegii:

sudo comandă – executa comanda cu drepturi de root

sudo su – alocă o consolă utilizatorului root, toate comenzile viitoare executate din acest punct vor fi executate cu privilegiile utilizatorului root

sudo su utilizator – aloca o consolă utilizatorului, toate comenzile vor fi executate cu drepturile utilizatorului

sudo -k – resetează drepturile inițiale, următoarea comandă sudo va cere din nou o parolă pentru a rula.

sudo visudo – deschide spre editare fișierul /etc/sudoers, de unde se poate configura sudo.

passwd – această comandă schimbă parola de acces

gksudo comandă – execută în Gnome o comandă cu drepturi de root

gksudo nautilus – deschide o fereastră a navigatorului Gnome având drepturi de root

kdesudo comandaexecută în KDE o comandă cu drepturi de root

kdesudo konquerordeschide o fereastră a navigatorului KDE având drepturi de root


Comenzi sistem

uname -r – afișează versiunea de kernel

uname -a – afișează toate informațiile despre kernelul instalat

lsb_release -a – afișează detalii despre distribuția Ubuntu instalată


Comenzi de rețea

sudo /etc/init.d/networking (start|stop|restart) – pornește, oprește sau repornește serviciul de rețea

sudo nano /et/network/interfaces – deschide pentru editare fișierul de configurare a interfețelor de rețea (după modificări în acest fișier este necesară repornirea servidiului de rețea)

sudo ifconfig -a – afișează detalii despre toate interfețele de rețea configurate in sistem

sudo iwconfig – arată informații despre interfețele wireless

sudo iwlist scan – caută rețele wireless

sudo ifup interfață – activează o interfață de rețea

sudo ifdown interfață – dezactivează o interfață de rețea


Comenzi asupra serviciilor din sistem se rulează cu sudo

start serviciu – pornește un serviciu (cu Upstart)

stop serviciu – oprește un serviciu (cu Upstart)

status serviciu – verifică dacă un serviciu este activ (cu Upstart)

/etc/init.d/serviciu start – pornește un serviciu (SysV)

/etc/init.d/serviciu stop – oprește un serviciu (SysV)

/etc/init.d/serviciu restart – repornește un serviciu (SysV)

/etc/init.d/serviciu status – verifică starea unui serviciu (SysV)


Comenzi cu serverul grafic (de asemenea se rulează cu sudo)

/etc/init.d/gdm restart – repornește serverul X (când folosim Gnome)

/etc/init.d/kdm restart – repornește serverul X (când folosim KDE)

nano /etc/X11/xorg.conf – deschide pentru editare fișierul de configurare a serverului X

sudo dpkg-reconfigure – reconfigure xserver-xorg-phigh – resetează configurația serverului X

Ctrl+Alt+Bksp – Resetează serverul X

Ctrl+Alt+F(Nr) – Schimbă in consola Nr

Ctrl+Alt+F7 – Reîntoarcere în mediul grafic (înapoi în X)


Comenzi pentru Firewallul intern (ufw)

ufw enable – pornește firewall

ufw disable – oprește firewall

ufw default allow – stabilește ca regulă de bază acceptarea tuturor conexiunilor

ufw default denystabilește ca regulă de bază respingerea tuturor conexiunilor

ufw status – arată regulile stabilite

ufw allow port Nr – acceptă conexiuni la portul Nr

ufw deny port Nr – respinge conexiunile la portul Nr

ufw deny from ip xxx.xxx.xxx.xxx – respinge conexiunile de la adresa xxx.xxx.xxx.xxx


TCP/IP tunning in Ubuntu cu ajutorul sysctl

Acest articol este legat de ce setări suplimentare se mai pot face pentru a mai îmbunătăți performanțele de rețea în Linux în general și în Ubuntu în special.

Ca idee, fișierele în care ne putem “juca” de-a tunningul se găsesc in urmatoarea locatie: /proc/sys/net/ipv4

Modificarile se pot face ori direct în fișierele de aici ori, pentru a le da caracter de permanență, in: /etc/sysctl.conf  (Personal, aici îmi place mie sa le țin, pentru a le putea exporta cat mai ușor și pe alte mașini).

La fiecare mașina pe care o fac, eu personal modific (adaug dupa caz) următoarele valori:

tcp_fin_timeout : Câte secunde va aștepta TCP sa primească notificarea FIN până ce va inchide definitiv socketul de comunicare. Este ceea ce se numește pe la unii “variabilă de persistență”. Este util sa stim si să modificăm aceasta valoare pentru a putea evita eventuale atacuri de tip DOS.

tcp_syn_retries : De câte ori va incerca o conexiune TCP sa retransmită pachetele de SYN. Din punctul meu de vedere, valoarea optimă nu trebuie sa depășească 255, eu unul, o țin la 150. Oricum, se referă in principiu doar la timeout-uri pentru conexiunile spre exterior.

tcp_retries1 : Cât de des se va încerca retransmiterea răspunsultui pentru o cerere de conexiune TCP. Se refera la conexiunile către interior.

tcp_keepalive_time : Cât de des se trimit mesaje de KEEPALIVE. Valoarea de bază este de 7200 secunde.

tcp_keepalive_probes : De câte ori se va încerca retransmiterea mesajelor de KEEPALIVE până ce serverul va considera conexiunea ca fiind întreruptă.

net.ipv4.conf.all.log_martians: Se loghează pachetele care nu au identificator de inițiator, adică se prezintă ca venind de pe Marte eventual 🙂

Ca idee, trebuie sa ne jucăm cu grija prin sysctl.conf pentru ca la fel de ușor putem să și bălmăjim lucrurile încât să mergăși mai rău:)

Monitorizare MySQL

Astazi am constatat ca unul din serverele de MySQL se comporta putin ciudat, in sensul ca uneori raspundea destul de greu inclusiv la niste solicitari nu foarte mancatorare de resurse.

Cautand o solutie de monitorizare, am gasit in repozitorii o aplicatie mica si frumoasa, care m-a ajutat sa ma prind ce si cum se intampla…. Se numeste “mtop” si este scrisa in Perl. Dupa descriere: “Shows top mysql threads”

Asa ca… $ sudo apt-get install mtop si mai apoi

test:~$ mtop –dbuser=alex –password=parolamea –seconds=1

mtop - Shows top mysql threads
mtop - Shows top mysql threads
© 2009-2019 Alex. Burlacu
%d bloggers like this: