Ruby pentru administratorii de sistem

Ruby este un limbaj bogat, gratuit, simplu, flexibil, compact și orientat spre obiecte. Recent, se bucură de o mare popularitate în rețea. Această popularitate se datorează parțial unei platforme foarte puternice pentru dezvoltarea aplicațiilor Web, Rails, scrisă în Ruby. Rails sau Ruby on Rails (ROR), așa cum se numește, oferă o platformă foarte puternică pentru dezvoltarea rapidă și eficientă a aplicațiilor Web. Este foarte scalabil și multe site-uri Web existente sunt create utilizând Ruby on Rails.

În plus față de utilizarea Ruby on Rails ca platformă de dezvoltare pentru aplicații Web, există o altă parte mai puțin cunoscută a Ruby. Ruby este un limbaj puternic de scripting care este pe picior de egalitate cu Python și Perl. El are oportunități extraordinare oferite de bibliotecile integrate și externe, puterea cărora poate fi utilizată pentru a rezolva problemele de scriere a scripturilor - astfel de probleme pot apărea dintr-o dată în orice mediu de lucru.

Administrarea sistemului este unul dintre mediile de lucru care necesită scrierea unei mulțimi de scripturi pentru a ușura munca și a spori eficiența acesteia. Gestionarea utilizatorilor, gestionarea proceselor, gestionarea fișierelor, gestionarea pachetelor software și alte operații automate de bază sunt mai bine tratate de scenarii decât operațiile de rutină manuale. Ruby este foarte potrivit pentru astfel de situații. Pentru aceasta, există un set bun de biblioteci.

În acest articol, voi începe cu exemple care arată modul în care aplicația Ruby poate fi utilizată pentru a simplifica unele dintre nevoile de bază de administrare a sistemului care necesită scripting. Aceste exemple demonstrează capabilitățile Ruby ca o alternativă puternică la scripturile shell. Desigur, aceste exemple pot fi îmbunătățite, extinse sau modificate după cum este necesar. După exemplele principale, voi prezenta o foarte puternică bibliotecă de administrare a sistemului pentru Ruby, numită Cfruby. Această bibliotecă include o gamă largă de funcționalități pentru a facilita administrarea și gestionarea sistemului.

Ruby în acțiune

Primul exemplu (listare 1). Ruby caută fișiere care se potrivesc cu acest model în calea specificată și furnizează informații detaliate despre aceste fișiere într-un mod ușor de utilizat. Exemplul utilizează numai interfața Ruby încorporată, prin urmare exemplul va funcționa pe orice platformă în care rulează Ruby.

În plus, acest exemplu arată puterea lui Ruby, simplificând în mare măsură astfel de sarcini. Nu este vorba doar de emularea comenzii de găsire în * nix, ci de adăugarea deasupra ei, demonstrând capacitățile Ruby.

Listing 1. Căutați fișiere care se potrivesc cu acest model în căutarea de căutare și afișează informațiile detaliate ale acestora
  • linii 5-11 - solicită utilizatorului căi și un model de căutare;
  • line 16 - utilizați Ruby din metoda "find" din clasa "Find" pentru a urmări calea de căutare specificată;
  • linia 17 - verifică dacă fișierul găsit este un director. Dacă da și dacă nu este ascuns ('.'), Atunci trece-ul său recursiv este executat;
  • line 24 - utilizați metoda "fnmatch" a clasei "File" pentru a verifica dacă fișierul găsit se potrivește cu modelul specificat;
  • linia 25-34 - imprimă informații detaliate despre fișier dacă fișierul se potrivește cu modelul.

Iată un exemplu de ieșire din acest scenariu (listare 2).

Listing 2. Exemplu de ieșire din primul exemplu

Administrarea sistemului necesită de multe ori să lucrați eficient cu arhivele zip pentru a gestiona copii de rezervă sau pentru a muta un set de fișiere de la o mașină la alta. Ruby este, de asemenea, convenabil aici. Cel de-al doilea exemplu se bazează pe primul, inclusiv scenariul, în care trebuie să arhivăm lista de fișiere obținute ca rezultat al căutării de tipar.

Modulul zlib încorporat ajută la procesarea fișierelor gzip și este destul de convenabil pentru majoritatea cazurilor. Dar aici pentru a crea arhive zip și a lucra cu ei vom folosi o altă bibliotecă convenabilă Ruby numită "rubyzip" (o puteți descărca de pe link-ul din secțiunea Resurse). Rețineți că acest exemplu folosește Ruby "curat", iar exemplul nu depinde de disponibilitatea utilităților liniei de comandă de pe mașină (a se vedea lista 3).

  • descărcați pachetul de bijuterii pentru rubyzip de la linkul furnizat și copiați-l în sistem. (La momentul acestei scrieri, a fost "rubyzip-0.9.1.gem");
  • executați gem instalați rubyzip-0.9.1.gem
Listarea 3. Lucrul cu fișierele de arhivă

Din fișierele găsite în rezultatul căutării bazate pe calea și șablonul specificat, scriptul creează o arhivă numită "test.zip".

  • liniile 9-15 sunt cereri de utilizator pentru căutarea căutării și masca de căutare;
  • linia 23 - crearea unui fișier de arhivă zip numit "test.zip".
  • line 25 - folosind Ruby din metoda 'find' din clasa 'Find' pentru a traversa calea de căutare specificată;
  • linia 26 - verifică dacă fișierul găsit este un director. Dacă da și dacă nu este ascuns ('.'), Atunci trece-ul său recursiv este executat;
  • line 33 - utilizați metoda "fnmatch" a clasei "File" pentru a verifica dacă fișierul găsit se potrivește cu eșantionul;
  • linia 35 - adăugarea unui fișier corespunzător fișierului zip.

Iată un exemplu de ieșire (listare 4).

Lista 4. Exemplu de ieșire a consolei pentru al doilea exemplu

Cfruby - administrare avansată a sistemului

Așa cum se menționează pe site-ul Cfruby: "Cfruby vă permite să administrați administrarea sistemului folosind Ruby. Acesta combină funcțiile unei biblioteci Ruby pentru administrarea sistemului și o clonă asemănătoare Cfengine (de fapt, un limbaj de domeniu special sau DSL pentru administrarea sistemului). "

Cfruby este un pachet format din două părți:

Cfruby poate fi descărcat în format gem Ruby sau în arhiva tar. Metoda cu bijuterie este mai simplă. Descărcați gemul și instalați-l cu comanda "gem install".

  • copiați gem-fișierul descărcat în sistemul dvs. (când scrieți acest articol a fost folosit "cfruby-1.01.gem");
  • run gem install cfruby-1.01.gem.

Acum, aplicația Cfruby este instalată pe sistemul dvs.

Noțiuni de bază Utilizarea Cfruby

Demonstrați capabilitățile Cfruby și modul în care acestea pot simplifica foarte mult administrarea și gestionarea sistemului.

Există două modalități principale de a accesa funcțiile pe care Cfruby le îndeplinește:

  • folosind clasele Ruby de la libcfgruby direct;
  • cfrubyscript wrapper, oferind o interfață clară pentru libcfruby.

Utilizarea directă a clasei Ruby de la libcfgruby

Libcfruby este esența companiei Cfruby, integrarea modulelor care oferă diferite funcționalități care simplifică întreținerea și configurarea sistemului. Pentru a utiliza libcfruby, trebuie să adăugați 'require_gem' cfruby '' la începutul scriptului, după instalarea gemului Cfruby. Acest lucru va oferi acces direct la toate modulele de bază libcfruby care pot fi folosite în scenariul de care aveți nevoie. Singurul dezavantaj al acestei metode este dimensiunea libcfruby și faptul că toate clasele și metodele sunt localizate în propriul lor spațiu de nume. Prin urmare, pentru a avea acces la orice clasă, este necesar să se coreleze cu spațiul de nume. De exemplu, libcfruby oferă o metodă de obținere a tipului de sistem. Pentru ao obține, efectuați următoarele operații (listare 5).

Listing 5. Obținerea unui tip de sistem de operare utilizând libcfruby

Este doar o modalitate de a afla numele sistemului dvs. de operare. Pe măsură ce lucrarea cu libcfruby continuă, scriptul se va umple la întâmplare cu toate specificațiile spațiului de nume. Și aici este utilă următoarea metodă de a folosi Cfruby.

Folosind "wrapper" cfrubyscript, care oferă o interfață mai ușor de înțeles pentru libcfruby

Pentru a utiliza cfrubyscript, adăugăm (listare 6):

Listing 6. Utilizarea cfrubyscript

Această comandă este inclusă în scriptul cfrubyscript, care oferă o interfață precisă și mai simplă pentru a accesa funcțiile libcfruby.

Ce se realizează utilizând cfrubyscript:

  • Exportați un set de variabile într-un spațiu de nume global, cum ar fi $ os, $ user, $ proc, și $ sched;
  • extragerea majorității modulelor principale în spațiul de nume principal - puteți apela FileEdit.set în loc de Cfruby :: FileEdit.set;
  • Adăugați metode auxiliare la String și Array care execută anumite comenzi Cfruby (instalarea programelor, editarea fișierelor etc.);
  • există, de asemenea, un jurnal detaliat.

Deci, cu specificațiile greoaie ale spațiului de nume din script-uri, sa terminat. Exemplul de mai sus, care emite tipul de sistem de operare, a devenit astfel (Lista 7).

Listing 7. Obținerea unui tip de sistem de operare utilizând cfrubyscript

Totul este pur și simplu tradus într-un singur apel utilizând variabila globală $ os. Cfruby este o aplicație foarte puternică, oferind o mare varietate de funcționalități pentru gestionarea sistemelor de tip * nix.

Să ne uităm la unele dintre ele și câteva exemple de bază ale utilizării lor.

Gestionarea utilizatorilor

Una dintre cele mai comune și cele mai importante sarcini în orice administrare a sistemului este managementul utilizatorilor și grupurilor. Cfruby oferă un set puternic de metode pentru implementarea acestor sarcini într-un mod compact și simplu.

Acest lucru este realizat prin utilizarea obiectului UserManager care poate fi obținut din modulul OS, așa cum se arată în Lista 8.

Listing 8. Obținerea unui obiect UserManager folosind libcfruby

Dacă totul se face în stilul cfrubyscript, atunci vom avea deja un obiect global de administrare a utilizatorului disponibil ca $ user, care poate fi folosit direct pentru a invoca metodele. Voi urma această metodă ca fiind cea mai simplă și mai ușor de citit.

Iată cum să îl utilizați pentru a crea și a șterge un utilizator (a se vedea Listing 9).

Listing 9. Gestionarea utilizatorilor folosind cfrubyscript

Ce se întâmplă în acest exemplu:

  • liniile 1, 2 - ca de obicei, include script-ul libcfruby și cfrubyscript;
  • rândul 3 - creează un nou utilizator cu numele specificat ca "newusername" și cu parola specificată în al doilea argument;
  • linia 4 - șterge utilizatorul cu numele de utilizator specificat ca "newusername". Al doilea argument poate fi adevărat sau fals, indicând faptul că trebuie să ștergeți directorul de domiciliu al utilizatorului care este șters.

În mod similar, sunt posibile operații pe grupuri utilizând metodele addgroup () și deletegroup () din obiectul UserManager.

Managementul proceselor

O altă sarcină importantă a administratorului este să monitorizeze și să gestioneze procesele care rulează. Cfruby poate fi, de asemenea, util aici, permițând monitorizarea eficientă a proceselor.

Acesta este modul în care Cfruby se ocupă de această sarcină (listele 10).

Listing 10. Gestionarea proceselor folosind cfgrubyscript

Ce se întâmplă în acest exemplu:

  • linia 3 - folosiți obiectul global $ proc pentru a termina procesul "vim" specificat ca argument. $ proc.vim este un obiect de proces ProcessInfo al procesului "vim" care rulează pe sistem. Cfrubyscript le creează automat;
  • linia 4 - începerea unui nou proces cu comanda specializată "ps-aef". Metoda de pornire este apelată direct din linia de comandă.

Gestionarea pachetelor software

Gestionarea software-ului în sistem este o altă sarcină pe care administratorul de sistem trebuie să o ofere. Cfruby oferă metode pentru instalarea și eliminarea ușoară a programelor în sistem (a se vedea Lista 11).

Listare 11. Gestionarea programelor folosind cfrubyscript
  • line 3 - utilizați obiectul global $ pkg PackageManager creat de cfrubyscript și obțineți toate pachetele prezente în sistem apelând metoda packages ();
  • linia 4 - lista tuturor pachetelor instalate;
  • linia 5 - instalează pachetul Ruby apelând metoda de instalare. Abilitatea de a apela direct metoda de instalare auxiliară direct de la numele pachetului.

Acesta este nivelul la care totul este simplificat.

Gestionarea fișierelor

Cfruby ajută și la gestionarea fișierelor. Crearea, editarea, ștergerea, atribuirea unui proprietar, schimbarea drepturilor de acces și multe altele se face simplu prin metodele oferite de Cfruby (Listing 12).

Listing 12. Gestionarea fișierelor utilizând cfrubyscript
  • linia 3 - modificări la proprietar, grup și drepturi de acces pentru fișierul "/ etc / ssh." Apelarea directă a metodei chown_mod () direct din fișier. Acest lucru este posibil din nou de obiectele și metodele de ajutor ale cfrubyscript. Rețineți că toate acestea necesită doar o singură linie.

Deci, exemplele de mai sus ar trebui să arate cât de puternic este Cfruby și cât de simplu este de a administra și gestiona sistemul într-un mod accesibil și eficient. În plus, aplicația face ca toate sarcinile de administrare a sistemului să fie mai simple și mai ușoare, cu un set intuitiv de clase și metode pe care le oferă.

concluzie

Ruby nu este doar dezvoltarea de aplicații Web bazate pe Rails. Acesta poate fi, de asemenea, folosit ca un limbaj puternic de scripting și o alternativă foarte eficientă față de scripting-ul obișnuit în shell, în majoritatea cazurilor folosit pentru a scrie scripturi de administrare a sistemului.

Cu propriul set de module încorporate și mai multe biblioteci externe, Ruby poate face administrarea sistemului mai eficientă și, fără îndoială, mai simplă. Ruby este un instrument foarte util și puternic care ar trebui să fie în recrutarea fiecărui administrator de sistem.

Descărcați resurse

Subiecte conexe

  • Articol original: Ruby pentru administratorii de sisteme
  • Ruby limbaj de programare. site-ul oficial al Ruby
  • Programarea Ruby. Ghidul programatorului pragmatic. Un ghid bun pentru învățarea programării Ruby. (RO)
  • Ruby. Descărcați cea mai recentă versiune de Ruby
  • Cfruby. Descărcați biblioteca de administrare a sistemului pentru Ruby.
  • RubyZip. Descărcați biblioteca de arhivă zip pentru Ruby.

Articole similare