tohle uz by mohlo fungovat
pokud neni gedit, tak to zkusi v xtermu spustit less a tomu predhodi vysledky (xterm a less jsou snad vsude)
#! /bin/bash
Devkit(){
which udisks &> /dev/null || { echo "$RANDOM - udisks není v systému"; return; }
for i in /dev/[sh]d[a-z]*; do
udisks --show-info $i
done
}
if [[ `whoami` != "root" ]]; then
zenity --info --title="DiskDebug" --text="Musíš být root!\nSpouštěj skript přes gksudo."
exit 1
fi
##### zde je možné přidávat příkazy ######
DiskPrikazy=( "foo" "dmesg" "lsusb" "fdisk -l" "parted -l" "mount" "blkid -c /dev/null" "ls -l /media" "Devkit" )
SystemPrikazy=( "foo" "uname -a" "cat /etc/lsb-release" "free -m" "df -Th" )
##########################################
TempSoubor=`mktemp`
# adresář, z kterého spouštíme skript
AktAdresar=$(cd $(dirname "$0");pwd)
# existuje AktAdresar?
# pokud ne, přepokládej $HOME nebo /tmp
[[ -z $AktAdresar ]] && AktAdresar="$HOME"
[[ -z $AktAdresar ]] && AktAdresar=/tmp
PocetDiskPrikazu=$((${#DiskPrikazy[@]} - 1))
PocetSystemPrikazu=$((${#SystemPrikazy[@]} - 1))
CelkemPrikazu=$(($PocetDiskPrikazu * 2 + $PocetSystemPrikazu + 15))
zenity --info --title="DiskDebug" --text="Krok č.1/2:\n\nOdpoj zařízení pomocí \"Odpojit\" (pokud je vidět ikona).\n Potom ho vysuň fyzicky z počítače, nebo ho vypni.\n\nAž bude odpojené, nebo pokud již bylo odpojené, klikni OK."
# progress bar
# pokud klikne uživatel Cancel, nestačí to dát do proměnné - je to v souboru $TempSoubor
# ten se pak testuje v průběhu skriptu a la '[[ -s $TempSoubor ]] && exit 1'
exec 3> >(zenity --progress --title="DiskDebug" --percentage=0 --auto-close --width=300 || echo cancel > $TempSoubor)
j=1
for i in $(seq 1 $PocetDiskPrikazu); do
prikaz=${DiskPrikazy[$i]}
echo $(($j * 100 / $CelkemPrikazu)) >&3
echo "# ${j}/${CelkemPrikazu} - ${prikaz}" >&3
$prikaz &> /tmp/$i.txt
[[ -s $TempSoubor ]] && exit 1
((j++))
sleep 0.2
done
zenity --info --title="DiskDebug" --text="Krok č.2/2:\n\nZnovu připoj nebo zapni zařízení.\n\nAž bude připojené, klikni OK."
for i in {1..14}; do
echo $(($j * 100 / $CelkemPrikazu)) >&3
echo "# ${j}/${CelkemPrikazu} - Sbírám data..." >&3
[[ -s $TempSoubor ]] && exit 1
((j++))
sleep 1
done
exec &> "$AktAdresar/výsledky.txt"
for i in $(seq 1 $PocetDiskPrikazu); do
echo $(($j * 100 / $CelkemPrikazu)) >&3
prikaz=${DiskPrikazy[$i]}
echo "# ${j}/${CelkemPrikazu} - ${prikaz}" >&3
echo
echo $prikaz
echo ---------------------------
cat /tmp/$i.txt
$prikaz | diff -wB - /tmp/$i.txt
[[ -s $TempSoubor ]] && exit 1
((j++))
sleep 0.2
done
for i in $(seq 1 $PocetSystemPrikazu); do
echo $(($j * 100 / $CelkemPrikazu)) >&3
prikaz=${SystemPrikazy[$i]}
echo "# ${j}/${CelkemPrikazu} - ${prikaz}" >&3
echo
echo $prikaz
echo ---------------------------
$prikaz
[[ -s $TempSoubor ]] && exit 1
((j++))
sleep 0.2
done
if zenity --question --title="DiskDebug" --text="Hotovo.\n\nByl vytvořen soubor $AktAdresar/výsledky.txt.\n\nChceš ho rovnou otevřít?"; then
editor="gedit"
which "$editor" &> /dev/null || editor="xterm -e less "
$editor "$AktAdresar/výsledky.txt" &
fi
exit 0