Se afișează postările cu eticheta mint. Afișați toate postările
Se afișează postările cu eticheta mint. Afișați toate postările

luni, 31 ianuarie 2011

Exemple de automatizari in BASH

Au ramas nepostate cateva scripturi pe care le-am facut de-a lungul timpului pentru conky sau chiar pentru utilizare directa in consola, asa ca, tu, cel care cauta pe google, daca ai ajuns aici, te poti folosi cu incredere de aceste exemple.
Pot fi folosite si pe post de template din care sa te inspiri in creearea altor scripturi BASH.


Monitor internet:
(te poate ajuta la identificarea problemelor de conectare la ISP)

#! /bin/bash
# Script de diagnostic al punctelor importante din conexiunea la internet
# Pentru conexiunea externa am folosit unul din ip-urile google-ului
if ping -c 1 -w 1 209.85.229.104 > /dev/null; then
echo "INTERNET ON"
echo "x" > /tmp/netok
else
echo "INTERNET OFF"
rm -f /tmp/netok
fi
if ping -c 1 -w 1 $(cat /etc/resolv.conf | grep -m 1 nameserver | awk '{ print $2}') > /dev/null; then
echo "DNS/ISP GOOD"
else
echo "DNS/ISP BAD"
fi
if ping -c 1 -w 1 $(route -n | grep 'UG' | cut -d: -f2 | awk '{ print $2}') > /dev/null; then
echo "GATEWAY GOOD"
else
echo "GATEWAY BAD"
fi

Ultimele postari active din forum.ubuntu.ro:



#!/bin/bash
numarlinii=5
wget -q http://forum.ubuntu.ro/rss.php -O /tmp/rss.php
cat /tmp/rss.php | grep "description>Topic:" | cut -d"<" -f2 | cut -d">" -f2 | while read line; do
echo $line | sed 's/Topic: /</'| cut -d"<" -f2 | gawk '{
while (match($0,/&#[0-9]+;/))
$0 = substr($0, 1, RSTART-1) sprintf("%c", substr($0, RSTART+2)+0) \
substr($0, RSTART+RLENGTH)
print
}' >> /tmp/content
done
cat /tmp/content | awk '{
if ($0 in stored_lines)
x=1
else
print
stored_lines[$0]=1
}'| head -n $numarlinii
rm -f /tmp/content
rm -f /tmp/rss.php
Extragerea IP-ului WAN curent:

#!/bin/bash
wget http://checkip.dyndns.org/ -q -O - |
grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'

In .conkyrc introduceti:



${if_existing /proc/net/route eth0}${font Ubuntu:size=8}WAN IP: ${execi 60 ~/cnkscr/ipshow}${endif}
Lista calculatoare LAN active:
(inlocuiti ip-urile si numele dupa preferinte)

#! /bin/bash
# Script de diagnostic al lan-ului
# Creat pentru conky de Dan Radu in iunie 2010
#echo "Checking hosts..." | zenity --progress --title="Working..." --auto-close
cat /dev/null > /tmp/lanlist
if ping -c 1 -w 1 192.168.123.5 > /tmp/valoare; then
echo "Laptop WIFI " $(cat /tmp/valoare | grep ttl | awk '{ print $7}' | cut -d"=" -f2 ) "ms" >> /tmp/lanlist
fi
if ping -c 1 -w 1 192.168.123.6 > /tmp/valoare; then
echo "Laptop ETH " $(cat /tmp/valoare | grep ttl | awk '{ print $7}' | cut -d"=" -f2 ) "ms" >> /tmp/lanlist
fi
if ping -c 1 -w 1 192.168.123.3 > /tmp/valoare; then
echo "Desktop1 ETH " $(cat /tmp/valoare | grep ttl | awk '{ print $7}' | cut -d"=" -f2 ) "ms" >> /tmp/lanlist
fi
if ping -c 1 -w 1 192.168.123.4 > /tmp/valoare; then
echo "Laptop2 WIFI " $(cat /tmp/valoare | grep ttl | awk '{ print $7}' | cut -d"=" -f2 ) "ms" >> /tmp/lanlist
fi
if ping -c 1 -w 1 192.168.123.7 > /tmp/valoare; then
echo "Laptop2 ETH " $(cat /tmp/valoare | grep ttl | awk '{ print $7}' | cut -d"=" -f2 ) "ms" >> /tmp/lanlist
fi
rm -f /tmp/valoare
if [ $(wc -l /tmp/lanlist | cut -d" " -f1) -gt 0 ]; then
#txtbuf=$(cat /tmp/lanlist)
cat /tmp/lanlist
rm -f /tmp/lanlist
else
echo "NO KNOWN LAN COMPUTER ONLINE"
rm -f /tmp/lanlist
fi

Lista conexiunilor "TCP-IP Incoming" cu rezolvarea numelui de domeniu:


#!/bin/bash
numarlinii=10
netstat -nat | grep ESTABLISHED | awk '{ print $5}' |cut -d":" -f1 | head -n $numarlinii > /tmp/honk
cat /tmp/honk | while read line; do
whois $(echo $line)| egrep -i "address|netname" > /tmp/whoz
if [ $(wc -l /tmp/whoz | cut -d" " -f1) -gt 0 ]; then
echo $(echo $line)" - "$(cat /tmp/whoz | grep -i netname | awk '{ print $2}') $(cat /tmp/whoz | grep -i address | awk '{ print $2,$3,$4,$5}' ) >> /tmp/listazone
fi
done
if [ -f /tmp/listazone ]; then
echo "nimic" > /dev/null
else
echo "NO CONNECTIONS FOR NOW*"
exit
fi
if [ $(wc -l /tmp/listazone | cut -d" " -f1) -gt 0 ]; then
cat /tmp/listazone
rm -f /tmp/whoz
rm -f /tmp/listazone
else
echo "NO CONNECTIONS FOR NOW"
rm -f /tmp/whoz
rm -f /tmp/listazone
fi


Share this on: Share On Facebook ! Add To Del.icio.us ! Share On Digg ! Share On StumbleUpon ! Blog Feed !

duminică, 5 decembrie 2010

Cum sa testezi noi distributii fara CD,Memorystick sau VirtualBox in mod real

M-am saturat sa stric cd-uri aiurea doar ca sa vad cum arata noua versiune de linux X si Y...
Din motive care ma depasesc, al meu calculator nu porneste de pe memorystick si ca atare trebuia sa ard cate un blank de fiecare data ca sa-mi satisfac curiozitatea.
Ce m-am gandit eu? Daca tot il am pe nemaipomenitul grub2 instalat si pot face modificari in configurarea meniului, de ce nu as putea sa ii spun sa foloseasca imaginea ISO?
Practic, pot sa-l folosesc pe post de cdrom virtual inainte sa incarc un alt OS.

Dupa indelungi cautari prin documentatia grub2, am gasit solutia:
Aflam numarul partitiei unde avem iso-ul:
sudo fdisk -l
Disk /dev/sda: 160.0 GB, 160041885696 bytes
...
...
...
...
/dev/sda9 2053 8773 53986401 83 Linux
In cazul de fata, am folosit linux mint 10 dvd pe care il am in partitia /dev/sda9 in /public/
Deci avem nevoie de partitia numarul 9 de pe primul harddisk care in termenii grub inseamna (hd0,9)


Editam configuratia grub2:
sudo gedit /etc/grub.d/40_custom

si adaugam:
(Pentru Linux Mint 10)
menuentry "Boot Mint Live ISO" {loopback loop (hd0,9)/public/linuxmint-10-gnome-dvd-i386.iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/public/linuxmint-10-gnome-dvd-i386.iso file=(loop)/preseed/mint.seed quiet splash -- initrd (loop)/casper/initrd.lz}
Pentru Ubuntu 10.10:

menuentry "Boot Ubuntu Live ISO" {loopback loop (hd0,9)/public/ubuntu-10.10-desktop-i386.iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/public/ubuntu-10.10-desktop-i386.iso file=(loop)/preseed/ubuntu.seed quiet splash -- initrd (loop)/casper/initrd.lz}
updatam grub:
sudo update-grub2
Nu stiu cat de necesar este, dar daca nu booteaza din prima e bine ca ISO-ul sa aiba toate drepturile active sau sa aiba ca owner contul root.


De remarcat faptul ca la loopback loop se foloseste expresia (hd0,9) dar la iso-scan/filename, se acceseaza direct calea.
la file=(loop)/preseed... mint.seed pentru Linux Mint si ubuntu.seed pentru Ubuntu. Daca vreti sa stiti exact, deschideti in prealabil iso-ul cu archive manager, mergeti in /boot/grub/loopback.cfg si in prima sectiune menuentry, gasiti intrarea corecta a distributiei in cauza, sub forma file=/cdrom/preseed/mint.seed

Un dezavantaj mare ar fi faptul ca daca vrem sa instalam linux-ul din iso pe acelasi harddisk fizic nu conteaza in care partitie, nu vom putea, deoarece e montata read-only partitia de pe care am boot-at iso-ul, deci nu putem suprascrie tabela de partitii.
Daca folosim doua harddisk-uri diferite fizic, atunci o sa mearga.
In schimb metoda e mai rentabila din punctul de vedere al performantelor de rulare si e "pe bune". E ca si cum ai rula de pe CD Live dar nu strici blank-uri aiurea. :)


Share this on: Share On Facebook ! Add To Del.icio.us ! Share On Digg ! Share On StumbleUpon ! Blog Feed !