Przydatne skrypty

Wyłącznie system! Wątpliwości dotyczące aplikacji proszę umieszczać niżej, w odpowiednich forach.
Awatar użytkownika
ubuproblem
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 169
Rejestracja: 30 lip 2007, 23:26
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME

Odp: Przydatne skrypty

Post autor: ubuproblem »

dobry pomysł z wyłączaniem Compiza przed włączeniem gry :D
Można to też zastosowania do Wine, chociaż z drugiej strony, jak ktoś włączy mały programik przez Wine, to bez potrzeby będzie musiał czekać na restart Compiza :D
Awatar użytkownika
mk_cafe
Piegowaty Guziec
Piegowaty Guziec
Posty: 7
Rejestracja: 26 cze 2008, 16:59
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Kontakt:

Odp: Przydatne skrypty

Post autor: mk_cafe »

Potrzebowalem czegos, co szybko przekonwertuje mp3 do slabszej jakosci, zeby zrzucic je potem na mp3 player, wiec zmienilem troche skrypt wrzucony wczesniej przez Rupka, zeby nie pytal sie o bitrate itd. tylko od razu konwertowal do ustalonej wartosci (aktualnie VBR 5, mono) i wrzucal plik z mozliwie taka sama nazwa do katalogu mp3conv na pulpicie, przywracajac tagi przy uzyciu id3ed.

Kod: Zaznacz cały

#!/bin/bash
#Autor:  Rupek (male zmiany: mk_cafe)


############################### FUNKCJE #####################################################
jeden ()
{
    wej=`zenity --file-selection --title="Wybierz plik mp3 do konwersji"`

        if [ "$?" = 1 ] ; then
            exit 
        fi
    temp=`echo "$wej" | sed 's/ /_/g'`
    temp=`basename $temp`
    temp=`echo "$temp" | sed 's/_/ /g'`
    wyj="$HOME/Desktop/mp3conv/$temp"
    lame --mp3input -m m -V 5 "$wej" "$wyj" | zenity --progress --auto-close --text="Proszę czekać 
    Trwa konwersja plików"
    
    #przywracamy tagi
    artist=`id3ed -i "$wej" | grep artist | sed 's/artist: //'`
    songname=`id3ed -i "$wej" | grep songname | sed 's/songname: //'`
    album=`id3ed -i "$wej" | grep album | sed 's/album: //'`
    year=`id3ed -i "$wej" | grep year | sed 's/year: //'`
    comment=`id3ed -i "$wej" | grep comment | sed 's/comment: //'`
    tracknum=`id3ed -i "$wej" | grep tracknum | sed 's/tracknum: //'`
    genre=`id3ed -i "$wej" | grep genre | sed 's/genre: //'`    
    genre=`echo "$genre" | sed 's/(.*)//'` #wywalamy nawias z numerem gatunku

    id3ed -s "$songname" -n "$artist" -a "$album" -y "$year" -c "$comment" -k "$tracknum" -g "$genre" -q "$wyj"    

    zenity --info --text="Konwersja zakończona pomyślnie."
}

wszystkie ()
{
    dir=`zenity --file-selection --directory --title="Wybierz folder z mp3 do konwersji"`

    for i in "$dir/"*.mp3
        do    temp=`echo "$i" | sed 's/ /_/g'`
            temp=`basename $temp`
            temp=`echo "$temp" | sed 's/_/ /g'` 
            wyj="$HOME/Desktop/mp3conv/$temp"
            lame --mp3input -m m -V 5 "$i" "$wyj"

            artist=`id3ed -i "$i" | grep artist | sed 's/artist: //'`
            songname=`id3ed -i "$i" | grep songname | sed 's/songname: //'`
            album=`id3ed -i "$i" | grep album | sed 's/album: //'`
            year=`id3ed -i "$i" | grep year | sed 's/year: //'`
            comment=`id3ed -i "$i" | grep comment | sed 's/comment: //'`
            tracknum=`id3ed -i "$i" | grep tracknum | sed 's/tracknum: //'`
            genre=`id3ed -i "$i" | grep genre | sed 's/genre: //'`    
            genre=`echo "$genre" | sed 's/(.*)//'`
            
            id3ed -s "$songname" -n "$artist" -a "$album" -y "$year" -c "$comment" -k "$tracknum" -g "$genre" -q "$wyj"    

    done | zenity --progress --auto-close --text="Proszę czekać 
    Trwa konwersja plików"
    
    zenity --info --text="Konwersja zakończona pomyślnie."
}

############################################################################################

##################################### OKNO GŁÓWNE #########################################
if [ -x /usr/bin/lame ]
    then
        zenity --info --text="Program wykorzystuje do konwersji program Lame "
else
    zenity --error --text="Nie masz zainstalowanego programu Lame
Użyj programu synaptic, apt-get lub innego menagera plików do jego zainstalowania"
exit
fi

wybor=`zenity --list --title "Wybór rodzaju konwersji" --text "Poniżej masz listę dostępnych
rodzajów konwersji" --radiolist --column "" --column "Dostępny bitrate" FALSE "Pojedyńczy plik mp3" FALSE "Wszystkie pliki mp3 w folderze" TRUE "Zakończ działanie programu"`

mkdir ~/Desktop/mp3conv #tworzy katalog, w ktorym znajda sie skompresowane pliki

case "$wybor" in
    "Pojedyńczy plik mp3")                        jeden       ;;
    "Wszystkie pliki mp3 w folderze")                wszystkie ;;
    "Zakończ działanie programu")                    exit      ;;
    *) zenity --error --text "Nic nie wybrałeś. Spróbuj ponownie"
esac
Pozdr.
Awatar użytkownika
ubuproblem
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 169
Rejestracja: 30 lip 2007, 23:26
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME

Odp: Przydatne skrypty

Post autor: ubuproblem »

Ja zrobiłem skrypcik do szybkiego montowania ISO:

Kod: Zaznacz cały

#!/bin/bash

cd ~
if [ -e ./ISO ]
then
	echo -n
else
	mkdir ./ISO
fi

sciezka="`pwd`/ISO"

if [ -e "$1" ]
then
	echo "#!/bin/sh
mount -o loop \"$1\" \"$sciezka\"" > tmp
	gksu sh tmp
	rm tmp
else
	plik=`zenity --title "Wybierz plik do zamontowania." --file-selection`
	echo "#!/bin/sh
mount -o loop \"$plik\" \"$sciezka\"" > tmp
	gksudo sh tmp
	rm tmp
fi
Użycie:
stworzyć plik giso, najlepiej w folderze domowym
nadać mu prawa do wykonywalności:

Kod: Zaznacz cały

chmod +x giso
skopiować plik do /usr/bin

Kod: Zaznacz cały

cp ./giso /usr/bin/giso
W nautilusie kliknąć prawym na obraz ISO, wybrać otwórz za pomocą...innej aplikacji rozwinąć wpisz własne, wpisać giso dać ok i już. :D
Później dwuklik na obraz spowoduje od razu zamontowanie obrazu (oczywiście pojawi się jeszcze proźba o podanie hasła). Można też wpisać poprostu giso w terminalu. Wtedy pojawi się okno wyboru pliku do zamontowania.

Piszcie, jak się komuś przyda, to zrobię też dla KDE :craz:
tydell
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 186
Rejestracja: 12 paź 2007, 21:09
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86
Kontakt:

Odp: Przydatne skrypty

Post autor: tydell »

a czy mógłby ktoś zamieścić raz jeszcze skrypt z radiami internetowymi (ostatnią wersję) gdyż link autora jest nie działający
Awatar użytkownika
ubuproblem
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 169
Rejestracja: 30 lip 2007, 23:26
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME

Odp: Przydatne skrypty

Post autor: ubuproblem »

Napisałem jeszcze jedną ciekawostkę, tutaj, bardziej przydatne.
Skrypt odlicz czas i po odliczeniu wykonuje czynność, którą sobie zażyczymy. W menu głównym programu wszystko można sobie ustawić :)

Kod: Zaznacz cały

#!/bin/bash

clear

echo "Witaj w tekstowym wyłączniku."
echo "Wprowadź liczbę minut do odliczenia."
echo -n "> "
read ileminut

ilesekund=$[$ileminut*60]

echo "Odliczanie będzie trwało $ilesekund sekund."

function list
{
	case "$1" in
	a)
		clear
		echo "1) Czas: $ilesekund sek. ($ileminut min.) - zmień."
		echo "2) Po zakończeniu: $pozak"
		echo "3) Rozpocznij odliczanie."
		echo "4) Zakończ"
		
		echo -n "> "
		read menu
		case "$menu" in
		1)
			echo
			echo "Wprowadź nowy czas"
			echo -n
			read ileminut
			ilesekund=$[$ileminut*60]
			list a
			;;
		2)
			list b
			list a
			;;
		3)
			dodaj
			list a
			;;
		4)
			clear
			exit 0
			;;
		*)
			clear
			echo "Błędny wybór..."
			sleep 2
			list a
		esac
		;;
	b)
		echo "1) Wyłącz komputer"
		echo "2) Uruchom ponownie"
		echo "3) Wykonaj polecenie"
		echo
		echo -n "> "
		echo
		read poz
		case "$poz" in
		1)
			pozak1="shutdown -h now"
			pozak="Wyłączenie komputera"
			;;
		2)
			pozak1="shutdown -r now"
			pozak="Ponowne uruchomienie komputera"
			;;
		3)	
			echo "Wprowadź dowolne polecenie systemowe."
			echo -n "> "
			read pozak1
			pozak="Polecenie systemowe: $pozak1"
			;;
		esac
		;;
	esac
}

function pokaz
{
	clear
	echo "Pozostało odliczania: $ilesekteraz sek. / $ilesekund sek. ($ileminut min.)"
	dodaj
}

function dodaj
{
	if [ "$ilesekteraz" = "$ilesekund" ]
	then
		$pozak1
	else
		if [ "$juz" = "tak" ]
		then
			sleep 1
			ilesekteraz1=$[$ilesekteraz+1]
			ilesekteraz=$ilesekteraz1
			pokaz
		else
			juz=tak
			pokaz
		fi
	fi
}

list a
Awatar użytkownika
youlleck
Sędziwy Jeż
Sędziwy Jeż
Posty: 62
Rejestracja: 01 lut 2008, 00:19
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Openbox
Architektura: x86_64
Kontakt:

Odp: Przydatne skrypty

Post autor: youlleck »

skrypt playlog.sh logujacy do pliku playlog.txt utwory odtwarzane w mocpie (odpalam go w conkym co 5s)

Kod: Zaznacz cały

z=`mocp --info | grep File:`
z=${z#File:\ }

sleep 5

y=`mocp --info | grep File:`
y=${y#File:\ }

if [ "$z" != "$y" ]; then
echo "`date +'%D %T'` $y" >> playlog.txt
fi
Problem rozwiazany? Dodaj [SOLVED] do tytulu watku!

Best4Linux.NET - sprawdz czy twoj sprzet zadziala pod Linuksem!
Procek
Sędziwy Jeż
Sędziwy Jeż
Posty: 31
Rejestracja: 25 lut 2007, 23:30
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Brak

Odp: Przydatne skrypty

Post autor: Procek »

msgat - skrypt do wysyłania powiadomień o określonym czasie lub za określony odstęp czasu. Wymaga zainstalowanej biblioteki libnotify (sudo apt-get install libnotify). Powiadomienia są ważne tylko na czas trwania bieżącej sesji.

Powiadomienia w środowisku Gnome wyglądają tak:
Obrazek
a wysyłać można je na kilka sposobów, np. dwa różne polecenia:

Kod: Zaznacz cały

msgat 2h55m bardzo ważna wiadomość
msgat 3h-5m "bardzo ważna wiadomość"
dadzą taki sam efekt, wyświetlą chmurkę w narożniku ekranu za 2 godziny i 55 minut (lub inaczej 3 godziny odjąć 5 minut). Rozpoznawane jednostki czasu to: w d h m - week, day, hour, minute.

Można również określić czas wprost, np. te dwa polecenia:

Kod: Zaznacz cały

msgat 20:45 31.07.08 'treść wiadomości'
msgat 2008-07-31 20:45 treść wiadomości
również dają ten sam efekt. W przypadku pominięcia jednego z parametrów daty lub czasu, przyjmowana jest aktualna data lub godzina.

Kod: Zaznacz cały

#!/bin/bash
#program: msgat v0.2
#author: Tomek Bekas
#email: procek <at> <no spam> gmail.com
#licence: GPL v3.0
#notes: the program sends a message to the user at a specific time or a 
#specified interval of time, uses the program at and the library libnotify;
#notifications are active only during the current session;
#all error messages are routed from stderr to /dev/null, because almost 
#all of them are warning messages sent to stderr even if everything works 
#well, but if you want to review them, change the contents of ERRLOG variable
#usage examples:
#msgat 2009-01-31 20:45 content  #these two different commands will give
#msgat 20:45 31.01.09 content    #the same effect
#msgat 1w2d23h30m part1 part2    #and these two also give the same effect
#msgat 1w3d-30m "part1 part2"    #

TFS=':' #time field separator, default is colon
DFS='.-' #date field separator, default is dot and dash
NFS='0123456789-' #numeric field separator, default is all digits and minus
DIFS="$IFS"

BU="minute" #basic unit, default is minute
TU=(w d h m) #time units, default is w d h m (weeks, days, hours, minutes)
UV=(7 24 60 1) #relative unit values

TIFS=$(echo ${TU[*]} | tr -d "${IFS:0:1}") #time interval field separator, default is 'wdhm'
ERRLOG="/dev/null" #error log file, default /dev/null :)

#set -x

function exitSuccess {  
  echo -en "message: $@\nwill be sent at: "
  if [ "$interval" ] ; then
    date -d"+$interval $BU" +"%a %d %b, %R"
  else
    date -d"$date $time" +"%a %d %b, %R"
  fi
  
  exit 0
}

function exitUsage {
  echo -e "usage: \n$0 [time] [date] <message>\n$0 [interval] <message>"
  exit 1
}

function checkLibnotify {
  if [ ! -x /usr/bin/notify-send ] ; then
    echo "you need to have libnotify installed to run this script"
    exit 1
  fi
}

function absUnitValue 
(
  result=1
  for (( i=$[ ${#UV[*]} - 1 ] ; i >= 0 ; i-- )) ; do
    result=$[ $result * ${UV[i]} ]
    [ "$1" = "${TU[i]}" ] && { echo $result ; exit 0 ; }
  done
  echo 0 #if unit not found in array
  exit 1
)

function getTime
(
  arg=$1
  IFS=$TFS
  set $1
  IFS=$DIFS
  [ $# -ne 2 ] && exit 1
  arg=`date -d"${1}:${2}" +%R` || exit 1 #generates errors to stderr
  echo $arg
  exit 0
)

function getDate
(
  arg=$1
  IFS=$DFS
  set $1
  IFS=$DIFS
  [ $# -ne 3 ] && exit 1
  arg=`date -d"${3}-${2}-${1}" +%F` || #generates errors to stderr
  arg=`date -d"${1}-${2}-${3}" +%F` || exit 1 #generates errors to stderr
  echo $arg
  exit 0
)

function getInterval
(
  arg=$1
  IFS=$NFS
  set $arg
  units=$@ #units used in arg
  IFS=$TIFS
  set $arg
  IFS=$DIFS
  
  for i in $units ; do
    sum=$[ $sum + $1 * $(absUnitValue $i) ] || exit 1 #generates errors to stderr
    shift
  done 
  echo $sum
  exit 0
)

function sendMsg
(
  if [ "$interval" ] ; then
    #generates errors to stderr
    at "now + $interval $BU" << EOT
    notify-send -t 0 "$@"
EOT
    (( $? )) && exit 1
  else
    #generates errors to stderr
    #at "${time:=$(date +%R)} ${date:=$(date +%F)}" << EOT
    at "$time $date" << EOT
    notify-send -t 0 "$@"
EOT
    (( $? )) && exit 1
  fi
  exit 0
)

function main {
  checkLibnotify
  [ $# -lt 2 ] && exitUsage #requires at least two arguments
  date=''
  time=''
  interval=''
  for i ; do
    #if interval and date and time are empty
    if [ -z "$interval" -a -z "$date" -a -z "$time" ] ; then
      interval=`getInterval $1` || #the only proper order is interval, time, date
      time=`getTime $1` ||
      date=`getDate $1` || exitUsage
      shift
    #if only date and interval are empty (time has some value)
    elif [ -z "$date" -a -z "$interval" ] ; then
      date=`getDate $1` && shift || date=`date +%F`
      sendMsg $@ && exitSuccess $@ || exitUsage
    #if only time and interval are empty (date has some value)
    elif [ -z "$time" -a -z "$interval" ] ; then
      time=`getTime $1` && shift || time=`date +%R`
      sendMsg $@ && exitSuccess $@ || exitUsage
    #if only time and date are empty (interval has some value)
    else #equal to: if [ -z "$time" -a -z "$date" ] ; then
      sendMsg $@ && exitSuccess $@ || exitUsage
    fi
  done
}

main $@  2> $ERRLOG #stderr > /dev/null
dawidgarus
Wytworny Kaczor
Wytworny Kaczor
Posty: 418
Rejestracja: 09 lut 2007, 23:17
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: Przydatne skrypty

Post autor: dawidgarus »

zmiana fps napisów.

changefps:

Kod: Zaznacz cały

#!/usr/bin/php5
<?php

if (!($f = $_SERVER['argv'][1])) $f = 23.976;
if (!($t = $_SERVER['argv'][2])) $t = 25;

$fp = fopen("php://stdin", "r") or die("can't read stdin");
while (!feof($fp)) {
        $line = fgets($fp);
        preg_match_all('/\{([0-9]+)\}/', $line, $matches);
        for ($i=0; $i<2; $i++) {
                $line = str_replace($matches[0][$i], '{'.floor($matches[1][$i]*$f/$t).'}', $line);
        }
        echo $line;
}

?>
użycie:

Kod: Zaznacz cały

changefps [początkowy fps] [fps po zmianie] < przed.txt > po.txt

gchangefps (graficzna nakładka, używająca zenity):

Kod: Zaznacz cały

#!/bin/bash
f=`zenity --scale --value 24 --min-value 10 --max-value 30 --text "Subtitle FPS"`
t=`zenity --scale --value 25 --min-value 10 --max-value 30 --text "Movie FPS"`
changefps $f $t < "$1" > "$1.new"
mv "$1.new" "$1"
użycie:

Kod: Zaznacz cały

gchangefps <ścieżka do pliku z napisami>
xc1256

Odp: Przydatne skrypty

Post autor: xc1256 »

Hasła - generowanie.
Dla tych co muszą zmieniać hasła np. co tydzień ( tak sobie ustawiłem w całej sieci) aby się nie męczyć prostą komendą, napisałem takie proste

Kod: Zaznacz cały

#!/usr/bin/perl -w
system "clear";
use Term::ANSIColor;
print color("blue"),"Hmm wymyślę hasła ..:)\n", color("reset");
print color("green"),"Podaj długość hasła (cyfrą) ",color("reset");
$li = <STDIN>;
if ($li lt "1")
{ print color("red"),"nic nie wprowadzono...!,kończe program\n", color("reset");exit}
print color("green"),"Podaj ilość haseł (cyfrą) ",color("reset");
$powt =<STDIN>;
if ($powt lt "1")
{ print color("red"),"brak wszystkich danych...!, kończe program.\n",color("reset");exit}
print "Ok, rozpoczynam generowanie haseł\n";
$ile = $powt;
for (1 ..$powt)
{
{ @lines = `pwgen -s -y $li`;print color("white"),"hasło..     ",color("reset");}foreach (@lines)
{print;}
}
przy podaniu długości hasła np 20-znaków mamy już niezłą mieszankę :razz:
lukskrodz
Piegowaty Guziec
Piegowaty Guziec
Posty: 1
Rejestracja: 20 mar 2008, 16:00
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME
Kontakt:

Odp: Przydatne skrypty

Post autor: lukskrodz »

Mój skrypt do aktualizacji danych w DynDNS.org:
http://www.howto.yoyo.pl/?p=27
Awatar użytkownika
anemus
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 117
Rejestracja: 19 lut 2007, 20:25
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86_64
Lokalizacja: Niebiańskie Piekiełko

Odp: Przydatne skrypty

Post autor: anemus »

Dla użytkowników gnome prościutki ale użyteczny skrypt do ~/.gnome2/nautilus-scripts, znaczy do menu kontekstowego umożliwiający szybkie edytowanie różnych plików bez przebijanie się przez uruchom za pomocą innej aplikacji gdy nie jest to plik rozpoznawany jako tekstowy, nawet gdy potrzeba uprawnień roota:

Kod: Zaznacz cały

#!/bin/bash
in_file=$1
if [ -w $in_file ]
  then
    if [ -f $in_file ]
      then
        gedit $in_file
    else
        gedit 
    fi
  else
    if [ -f $in_file ]
      then
        gksu gedit $in_file
      else
        gksu gedit 
    fi
fi
Takie małe coś dla klikaczy lubiących psuć swój system ;)
"I smoke two joints before I smoke two joints and then I smoke two more"
Tux Marley
Cyryllo
Sędziwy Jeż
Sędziwy Jeż
Posty: 49
Rejestracja: 19 lut 2007, 00:42
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Unity
Architektura: x86_64
Lokalizacja: Gdańsk
Kontakt:

Odp: Przydatne skrypty

Post autor: Cyryllo »

haha fajne skrypty niektóre :)
Ubuntu Counter Project - user number # 24812
Awatar użytkownika
daris
Sędziwy Jeż
Sędziwy Jeż
Posty: 66
Rejestracja: 26 lut 2007, 17:20
Płeć: Mężczyzna
Wersja Ubuntu: 15.04
Środowisko graficzne: KDE Plasma
Architektura: x86_64

Odp: Przydatne skrypty

Post autor: daris »

Skrypt pokazujący zużycie transferu (prędkość) przez aktualnie uruchomione aplikacje/usługi itp

Kod: Zaznacz cały

#!/bin/bash
max_chars=100 # maksymalna liczba znaków na konsoli (dlugosc paska wykresu)
max_down_speed=65536 # maksymalna prędkość pobierania w bajtach (tutaj 65536 B = 64 KB = 512Mb)

function get_speed()
{
	speed=`cat /proc/net/dev | grep eth0`
	if [ "$1" == 'up' ]; then
		speed=`echo $speed | awk '{print $9}'`
		last=$last_upl
		last_upl=$speed
	else
		speed=`echo $speed | awk '{print $1}' | awk -F":" '{print $2}'`
		last=$last_down
		last_down=$speed
	fi
	speed=$[ $speed - $last ]
}

function kb()
{
	bytes=$[$1 * 100 / 1024]
	val=`echo $bytes | sed 's/\([[:digit:]]*\)\([[:digit:]]\{2\}\)/\1.\2/g'`
	if [ `echo $val | wc -m` == 4 ]; then
		val="0$val"
	elif [ `echo $val | wc -m` == 3 ]; then
		val="0.$val"
	elif [ `echo $val | wc -m` == 2 ]; then
		val="0.0$val"
	fi
}

function wykres()
{
	perc=$[$1 * 100 / $max_down_speed]
	print_chars=$[$perc/ (100 / $max_chars)]
	str='['
	for s in `seq 0 $max_chars`
	do
		if [ $s -lt $print_chars ]; then
			str+='#'
		else
			str+='-'
		fi
	done
	str+=']'
}

last_upl=`cat /proc/net/dev | grep eth0 | awk '{print $9}'`
last_down=`cat /proc/net/dev | grep eth0 | awk '{print $1}' | awk -F":" '{print $2}'`
sleep 1
echo -e "\n"
i=1

while [ true ]
do
	get_speed 'up'
	kb $speed
	upl_speed=$val
	
	get_speed 'down'
	wykres $speed
	wykres=$str
	down_sum=$[$down_sum + $speed]
	kb $speed
	down_speed=$val
	
	down_avg=$[$down_sum/$i]
	kb $down_avg
	down_avg=$val
	
	echo -e "\e[2A$wykres"
	echo -e "Download: $down_speed KB/s\e[K\tUpload: $upl_speed KB/s\e[K\tDownload Avg: $down_avg KB/s"
	i=$[$i+1]
	sleep 1
done
A tak to wygląda

Kod: Zaznacz cały

darek:~/skrypty/netstat$ ./netstat
[########---------------------------------------------------------------------------------------------]
Download: 5.55 KB/s     Upload: 0.77 KB/s       Download Avg: 5.24 KB/s
(skopiowane stąd)
:craz:
outslider
Sędziwy Jeż
Sędziwy Jeż
Posty: 68
Rejestracja: 03 lis 2007, 23:14
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: Przydatne skrypty

Post autor: outslider »

Dość często korzystam ze słowników pol-ang i ang-pol w Sieci i szczególnie upodobałem sobie angool.com. Nie chce mi się jednak za każdym razem otwierać nowej karty albo szukać już otwartej, do tego jeszcze na stronie źle działa wpisywanie polskich znaków, dlatego też napisałem skrypcik, który wywołany z poszukiwanym słowem łączy się ze stroną i wyświetla wyniki. Skrypt:

Kod: Zaznacz cały

#!/bin/bash

word=""
au=`echo "ą"|head -c2|tail -c1`
ci=`echo "ć"|head -c2|tail -c1`
eu=`echo "ę"|head -c2|tail -c1`
wo=`echo "ł"|head -c2|tail -c1`
ni=`echo "ń"|head -c2|tail -c1`
oo=`echo "ó"|head -c2|tail -c1`
si=`echo "ś"|head -c2|tail -c1`
zi=`echo "ź"|head -c2|tail -c1`
rz=`echo "ż"|head -c2|tail -c1`

if [ "$1" = "" ]; then
  echo "Nie podales zadnego slowa"
  echo "Skladnia: platon <slowo>"
  exit 1
fi

echo "Platon 0.1, szukanie: $1"

letters=`echo $1|wc -c` #ilosc bajtow slowa

Li=1
until [ "$Li" = "$letters" ]; do
  sign[$Li]=`echo $1|head -c$Li|tail -c1`
  Li=$[$Li+1]
done

Li=1; mod=0; hol=$letters
until [ "$Li" = "$letters" ]; do


  case "${sign[$Li]}" in
      "$au") mod=$[$mod+1]
             sign[$Li]="a"
             urllet[$Li]="%B1"
             hol=$[$hol-1];;
      "$ci") mod=$[$mod+1]
             sign[$Li]="c"
             urllet[$Li]="%E6"
             hol=$[$hol-1];;
      "$eu") mod=$[$mod+1]
             sign[$Li]="e"
             urllet[$Li]="%EA"
             hol=$[$hol-1];;
      "$wo") mod=$[$mod+1]
             sign[$Li]="l"
             urllet[$Li]="%B3"
             hol=$[$hol-1];;
      "$ni") mod=$[$mod+1]
             sign[$Li]="n"
             urllet[$Li]="%F1"
             hol=$[$hol-1];;
      "$oo") mod=$[$mod+1]
             sign[$Li]="o"
             urllet[$Li]="%F3"
             hol=$[$hol-1];;
      "$si") mod=$[$mod+1]
             sign[$Li]="s"
             urllet[$Li]="%B6"
             hol=$[$hol-1];;
      "$zi") mod=$[$mod+1]
             sign[$Li]="z"
             urllet[$Li]="%BC"
             hol=$[$hol-1];;
      "$rz") mod=$[$mod+1]
             sign[$Li]="z"
             urllet[$Li]="%BF"
             hol=$[$hol-1];;
          *) urllet[$Li]="${sign[$Li]}";;
  esac
  pos=$[$Li-$mod]
  letter[$pos]="${sign[$Li]}"
  urllet[$pos]="${urllet[$Li]}"
  Li=$[$Li+1]
done

Li=1
until [ "$Li" = "$hol" ]; do
  word+=${letter[Li]}
  urlend+=${urllet[$Li]}
  Li=$[$Li+1]
done

echo "Laczenie z http://angool.com/search/index.php?query=$urlend"
echo
echo "------------"
links -dump http://angool.com/search/index.php?query=$urlend|grep $word
echo "------------"

exit 0

#Platon 0.1 - Pawel Tokarz, 2008

Lwia część, jak widać, dotyczy polskich znaków. Działa w miarę, trzeba jeszcze dopracować parę rzeczy, ale na szybko starczy.
Awatar użytkownika
qbsiu
Piegowaty Guziec
Piegowaty Guziec
Posty: 14
Rejestracja: 22 sie 2006, 10:06
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Architektura: x86

Rapidshare + ADSL Pentagram Cerberus

Post autor: qbsiu »

Rapidshare + ADSL Pentagram Cerberus, czyli jak pobierać linki, iść na piwo - w trakcie pobierania resetuje się neo więc nie czekamy 15 minut, tylko 2-3 minuty.
Skrypcik znaleziony na necie, jest główny autor i pomysłodawca tego, jednak coś mi się w nim nie podobało, więc to przebudowałem i dodałem funkcję do resetowania neo. Od razu mówię, że skrypt przerabiałem pod KDE.

Kod: Zaznacz cały

#!/bin/bash
#
# Autor: Piotr Jachacy <jachacy@gmail.com>
# Modyfikował: Łukasz Kubsz <qbsiu@o2.pl>
#
# ostatnia modyfikacja: 28.12.2008
#
# /* This program is free software. It comes without any warranty, to
# * the extent permitted by applicable law. You can redistribute it
# * and/or modify it under the terms of the Do What The Fuck You Want
# * To Public License, Version 2, as published by Sam Hocevar. See
# * http://sam.zoy.org/wtfpl/COPYING for more details. */ 
#
# kolorki
clear
red="\e[1;31m"
zaden="\033[0m"
green="\e[1;92m"
white="\e[1;37m"

liczba=0


function restart
{

GATEIP="192.168.0.1"
LINK="http://$GATEIP/doc/index.htm?WINDWEB_URL=/doc/adsltop.htm&ADSL_Action=0"
USER="admin"
PASS="haselko_nasze"
wget --quiet --http-user=$USER --http-password=$PASS ${LINK} -O /tmp/wget_router
rm -f /tmp/wget_router
rm -rf .ip
mkdir .ip
cd .ip
while [ 1 ]; do
ip=`wget --quiet http://checkip.dyndns.org/index.html && cat index.html | cut -d ' ' -f 6 | cut -d '<' -f 1`
sleep 1
if [ -n "$ip" ]; then
        break
fi
done
cd ..
rm -rf .ip
}
function odliczanie
{
	x=$1
	while [ $x -ge 1 ]; do
		printf "\r%-5s" $x"s"
		x=$[x -1]
		sleep "1"
	done
	printf "\r%-5s" ""
}
function pobierz
{
	link=$1
	sciezka=$2

	link=$(wget "$link" -q -O - | grep 'form id="ff"' | sed -e 's/.*action="\(.*\)"\s.*/\1/')

	if [ -n "$link" ]; then
		link=$(wget --post-data "dl.start=Free" $link -q -O -)


		if [  -n "$(echo "$link" | grep "Please wait until the download is completed")" ]; then
			echo -e ''$red'Sciągasz inne pliki!'$zaden''
			exit
		elif [  -n "$(echo "$link" | grep "You have reached the download limit for free-users. Would you like more?")" ]; then
			echo -e ''$green'Trwa resetowanie Twojego rutera'$zaden''
			restart
			pobierz $1 $sciezka
		else
			czas=$(echo "$link" | grep "var c" | sed -e "s/var c=\([0-9]*\);.*/\1/")
			echo -e ''$green'Trwa odliczanie'$zaden''
			odliczanie $czas
			echo -e ''
			echo -e ''$red'----------------------------------------------------------'$zaden''
			echo -e ''$red''$liczba'/'$ilosc''$green' Trwa pobieranie: '$1''$zaden''
			link=$(echo "$link" | grep 'form name="dlf"'| sed -e 's/.*action="\(.*\)"\s.*/\1/')
			wget --post-data "mirror=on" "$link" -P "$sciezka"
			if [ "$?" == "0" ]; then
				kdialog --passivepopup "Pobrano $link"
			else
				kdialog --passivepopup "Nie udało się pobrać pliku: $link"
				
			fi
			echo -e ''$red'----------------------------------------------------------'$zaden''
		fi	
					
	else
		echo -e ''$red'Nie udało się pobrać pliku: '$green''$1''$zaden''
	fi
}

sciezka_zapisu=`kdialog --getexistingdirectory /`
typ=`kdialog --radiolist "Wybierz typ:" 1 "Wprowadź listę" on 2 "Wprowadź linki ręcznie" off`

if [ $typ == "1" ]; then
sciezka=`kdialog --getopenfilename ~`
	ilosc=`cat $sciezka |grep -E -v "^#|^$" | wc -l`
	for x in $(cat $sciezka)
	do
		if [ -n "$x" ]; then
			liczba=$(($liczba+1))
			pobierz "$x" "$sciezka_zapisu"
		fi
	done
elif [ $typ == "2" ]; then
	touch ~/tmp.rapid
	kdialog --textinputbox 'Podaj linki, <b>każdy link w osobnej linijce</b>' > ~/tmp.rapid
	ilosc=`cat ~/tmp.rapid | grep -E -v "^#|^$" | wc -l`
	for x in $(cat ~/tmp.rapid)
	do
		if [ -n "$x" ]; then
			liczba=$(($liczba+1))
			pobierz "$x" "$sciezka_zapisu"
		fi
	done
rm ~/tmp.rapid
fi
Oryginał: >>pobierz<<
Mój skrypt ma dużo błędów, w najbliższym czasie się pobawię.
Więcej moich skryptów znajdziesz tu: http://qbsiu.palarnia.org/Skrypty/
Awatar użytkownika
ryniek
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 188
Rejestracja: 21 lis 2007, 16:48
Płeć: Mężczyzna
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: Przydatne skrypty

Post autor: ryniek »

Skrypt do pobierania informacji o ilości nowych wiadomości ze skrzynki WP.PL
[link]

W przypadku gdy link wygaśnie, zamieszczam poniżej archiwum.

Skrypt dodajemy do configa Conky np. tak:

Kod: Zaznacz cały

${font}${color}${color burlywood}${font :size=10}Poczta@WP.PL: ${font :size=9}${execi 60 ~/Skrypty/pocztawp.py}${color burlywood}
a uruchamiamy tak:

Kod: Zaznacz cały

python /home/user/Skrypty/pocztawppl.py
Nie wolno jednocześnie sprawdzać skryptem ilości nowych wiadomości oraz odczytywać za pomocą klienta e-mail, gdyż otrzymamy wyjątek. Do tego samego konta skrzynki wp.pl nie mogą mieć dostępu dwa programy/dwie osoby na raz. W GMailu nie ma takich problemów gdyż jest Atom.
Załączniki
pocztawppl.py.tar.gz
(935 Bajtów) Pobrany 271 razy
Dropbox invite: http://tinyurl.com/dropbox-invite
Stop złym praktykom sprzedaży oprogramowania wraz z sprzętem - http://uwolnijlaptopa.pl/
cichy_
Piegowaty Guziec
Piegowaty Guziec
Posty: 28
Rejestracja: 19 sty 2009, 13:46
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Słownik pol-ang i ang-pol

Post autor: cichy_ »

Tłumaczenie pol-ang

Kod: Zaznacz cały

links -dump http://megaslownik.pl/slownik/polsko_angielski/$1 | grep "\[IMG\]>>" | sed -e 's/\[IMG\]//'
Tłumaczenie ang-pol

Kod: Zaznacz cały

links -dump http://megaslownik.pl/slownik/angielsko_polski/$1 | grep "   >> "
Adawo
Piegowaty Guziec
Piegowaty Guziec
Posty: 27
Rejestracja: 16 lis 2007, 16:12
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: Przydatne skrypty

Post autor: Adawo »

Skrypt pobierający angielskie słówko i idiom dnia z serwisu ang.pl

Kod: Zaznacz cały

#!/bin/bash

#Skrypt pobierający słówko i idiom dnia z serwisu ang.pl
#stworzone przez SCT/Adawo <adawo.roag@gmail.com>
#na licencji GPL 

#Pobieramy slowko dnia...
wget "http://www.ang.pl/slowko_dnia.php?today=1&print=1" -q -O /tmp/slowko_dnia
#usuwamy tagi html | kodowanie z iso-8859-1 na iso-8859-2 | 
html2text -nobs /tmp/slowko_dnia | iconv -f iso-8859-2 | sed -e "s/\ \{2\,\}//g; s/\\[img[a-zA-Z0-9 ./\n:]*\]//g; s/\\[http[a-zA-Z0-9 ./\n:]*\]//g; s/\\[Unknow[a-zA-Z0-9 ./\n:]*\]//g;" > /tmp/slowko_tmp


#SŁÓWKO DNIA
word=$(echo `cat /tmp/slowko_tmp | head -n 22 | tail -n 1 | sed -e "s/\[[a-zA-Z\/]*//g"`) #Slowko dnia

def_start=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*DEFIN*" -b | head -c 3`)
def_end=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*EXAMPLE\:" -b | head -c 3`)
word_definiction=$(echo `cat /tmp/slowko_tmp | tr "\n" "  " | cut -b "$def_start-$def_end" | sed -e "s/DEFINITION: //g"`)

#wycinamy przykład
exa_end=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*POLISH TRANS" -b | head -c 3`)
exa_start=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*EXAMPLE\:" -b | head -c 3`)
word_example=$(echo `cat /tmp/slowko_tmp | tr "\n" "  " | cut -b "$exa_start-$exa_end" | sed -e "s/EXAMPLE: //g"`) 

#translacja
word_translation=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*POLISH TRANSLATION: " | head -n 1 | sed -e "s/POLISH TRANSLATION: //g"`)

#IDIOM DNIA:
idiom_start=$(echo `cat /tmp/slowko_tmp | grep -e "IDIOM OF THE DAY" -n | head -c 2`) 
idiom=$(echo `cat /tmp/slowko_tmp | head -n $(expr $idiom_start + 2) | tail -n 1`)

exa_start=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*EXAMPLE\:" -b | tail -n 1 | head -c 3`)
exa_end=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*POLISH TRANS" -b | tail -n 1 | head -c 3`)
idiom_example=$(echo `cat /tmp/slowko_tmp | tr "\n" "  " | cut -b "$exa_start-$exa_end" | sed -e "s/EXAMPLE: //g"`) 

idiom_translation=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*POLISH TRANSLATION: " | tail -n 1 | sed -e "s/POLISH TRANSLATION: //g"`)

#WYPISUJEMY:
echo -e "\033[0;31mSŁÓWKO DNIA:\033[0m $word"
echo -e "\033[0;31mDEFINICJA:\033[0m $word_definiction"
echo -e "\033[0;31mPRZYKŁAD:\033[0m $word_example"
echo -e "\033[0;31mTRANSLACJA:\033[0m $word_translation"
echo 
echo -e "\033[0;31mIDIOM:\033[0m $idiom"
echo -e "\033[0;31mPRZYKŁAD:\033[0m $idiom_example"
echo -e "\033[0;31mTRANSLACJA:\033[0m $idiom_translation"

#Sprzatamy po sobie śmeci...
rm /tmp/slowko_dnia /tmp/slowko_tmp   
PS. Byłbym wdzięczny za uwagi w stosunku do kodu, bash nie jest moją mocą stroną...
Awatar użytkownika
igotit4free
Przyjaciel
Przyjaciel
Posty: 6453
Rejestracja: 29 paź 2008, 22:51
Płeć: Mężczyzna
Architektura: x86_64
Lokalizacja: KRK

Skrypt odczytujący USB_size w opraciu o df i awk => Conky

Post autor: igotit4free »

Skrypt przydatny do konfiguracji Conky w sposób niezależny od nazwy wyświetlanej w punkcie montowania /media/NAZWA_USB.
W podanej formie odczytuje wartość z drugiej linii drugiej kolumny pliku:

Kod: Zaznacz cały

domek@domek-desktop:~$ df -H /dev/sdb1
System plików             rozm.  użyte dost.  %uż. zamont. na
/dev/sdb1              2,1G   337M   1,8G  17% /media/PENNY
Skrypt:

Kod: Zaznacz cały

    #!/bin/bash

    echo "$(df -H /dev/sdb1 | awk '{if(NR == 2){print $2}}')"
Manipulacja parametrem {print $X} pozwala na odczytanie pozostałych wartości.

Po utworzeniu skryptu o nazwie "NAZWA_XXX" w moim przypadku w katalogu domowym "conky" trzeba nadać prawa do wykonywania jako program:

Kod: Zaznacz cały

cd conky && chmod a+x NAZWA_XXX
i odpalać w Conkym poleceniem:

Kod: Zaznacz cały

${execi 3 ~/conky/NAZWA_XXX}
witek23
Sędziwy Jeż
Sędziwy Jeż
Posty: 49
Rejestracja: 31 gru 2008, 11:40
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME

Odp: Przydatne skrypty

Post autor: witek23 »

Nakładka na kompilator (c/c++).

Mój debiut w bash'u;-)

Kod: Zaznacz cały

#!/bin/bash

clear
echo -e "\t\t\t\t  ABC++ v0.1\n\n"
	if [ -d ~/abc++ ]
	then
	echo -e "Katalog abc++ istnieje\n"
	else
	mkdir ~/abc++/
	echo -e "Utworzono katalog 'abc++' w folderze domowym\n"
	fi
cd ~/abc++/
	if [ -e ~/abc++/conf.txt ]
	then
	d=`cat conf.txt| head -1`
	e=`cat conf.txt| head -2| tail -1`
	u=`cat conf.txt| tail -1`
	else
	d=$PWD
	e="cpp"
	u="c++"
	fi
cd $d
c=1
while [ $c==1 ]
do
echo -e "Kody zrodlowe musza byc umieszczone w tym folderze: $d\n"
echo -e "Domyslne rozszerzenie to: $e\n"
echo -e "Wlaczony kompilator to: $u\n--------------------------------------------------------------------------------"
echo -e "\n\t\t\t    1 - kompiluj nowy plk"
echo -e "\t\t\t    2 - kompiluj ponownie"
echo -e "\t\t\t    3 - edytuj kod źródłowy"
echo -e "\t\t\t    4 - ustawienia"
echo -e "\t\t\t    5 - wyjdz"
read b
  case $b in
    "1")echo -e "Podaj nazwę pliku do kompilacji:\n"
	read a
	clear
	if [ -e $d/$a.$e ]
	then
	$u $a.$e -Wall -o $a.o 2> $a.txt
		if [ -e $d/$a.txt ]
		then
 		mv  $d/$a.txt ~/abc++/logi
		fi
	export $a
	xterm -e "./$a.o; bash" 
	gedit $a.cpp
	else
	echo -e "\a   Plik o podanej nazwie nie istnieje, sprawdz rozszerzenia, oraz sciezke\n\t\tdo katalogu z kodami zrodlowymi - sprawdz ustawienia\n\n"
	fi;;
   "2") clear
	if [ -e $d/$a.$e ]
	then
	$u $a.$e -Wall -o $a.o 2>> $a.txt
		if [ -e $d/$a.txt ]
		then
 		mv  $d/$a.txt ~/abc++/logi
		fi
	export $a
	xterm -e "./$a.o; bash" 
	gedit $a.cpp;
	else
	echo -e "\a   Plik o podanej nazwie nie istnieje, sprawdz rozszerzenia, oraz sciezke\n\t\tdo katalogu z kodami zrodlowymi - sprawdz ustawienia\n\n"
	fi;;
   "3") gedit $a.cpp;;
   "4") clear
	echo 'Aktualne ustawienia:'
	echo -e "\nKody zrodlowe musza byc umieszczone w tym folderze: $d\n"
	echo -e "Domyslne rozszerzenie to: $e\n"
	echo -e "Wlaczony kompilator to: $u\n--------------------------------------------------------------------------------"
        echo -e "\t\t\t1 - zmien folder kodow zrodlowych"
	echo -e "\t\t\t2 - zmian domyslne rozszerzenie kodow zrodlowych"
	echo -e "\t\t\t3 - zmien kompilator"
	echo -e "\t\t\t4 - wyczysc logi"
	echo -e "\t\t\t5 - wyjdz"
	read c
		case $c in
    		"1")echo -e "Podaj domyslną sciezke do folderu z kodami zrodlowymi:\n"
		read d
		cd $d;;
		"2")echo -e "Podaj domyslną rozserzenie:\n"
		read e;;
		"3")echo -e "Podaj nazwe kompilatora: c - gcc, c++ - g++:\n"
		read u;;
		"4")cd ~/abc++/logi
		rm *.txt
		clear;;
		"5") clear;;
		*) echo "Nic nie wybrałeś";;
		esac;;
    "5") cd ~/abc++/
	echo $d > conf.txt 
	echo $e >> conf.txt 
	echo $u >> conf.txt 
	exit;;
    	*) echo "Nic nie wybrałeś";;
esac
done
ODPOWIEDZ

Wróć do „Instalacja, aktualizacja i konfiguracja Ubuntu”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 113 gości