bash script kérdés
#1
Elküldve: 2004. 01. 29. 14:28
#! /bin/sh
#destiny dir check
dir=/mnt/mounts
if cd "$dir" 2>/dev/null;
then echo
else
echo
mkdir /mnt/idemountoltam
cd /mnt/idemountoltam
fi
touch /tmp/no
touch /tmp/part
partitions=`cat /proc/partitions`
echo "$partitions" |grep -c hd[a-d][1-9] > /tmp/no
echo $partitions |grep -o hd[a-d][1-9] > /tmp/part
partitions=`cat /tmp/part`
#hogyan tudn'am kihagyni no 'es tmp file-okat, ugy hogy valtoz'ora viszem egybol
no=`cat /tmp/no`
for ((i=1;i<=no;i++))
do
#echo $i
echo $partitions|awk '{print ${i}}' > /tmp/part #??????????????????????
#mkdir felso sor, ha j'o lenne
#mount /dev/felso sor, ha j'o lenne /mnt/hd/felso sor, ha j'o lenne
#az is j'o lenne, ha ""koz'e teszem a $partitions -t 'es az aktu'alis sort irom ki, de mi
#az ami az aktu'alis sort kirja pl: writeline -n=$sor $partitions (-bol)
#m'eg kiakarom eg'esz'iteni a /proc/ide/hda/model infoval+kimount
cat /tmp/part # ez ki lesz v'eve csak jelz'es
done
#2
Elküldve: 2004. 01. 29. 14:45
idézet:
Ezt írta Supageo:
[QB]mountoló scriptet készítek, de elakadtam, a kommentbe a kérdés.
#! /bin/sh
#destiny dir check
dir=/mnt/mounts
if cd "$dir" 2>/dev/null;
then echo
else
echo
mkdir /mnt/idemountoltam
cd /mnt/idemountoltam
fi
[/gb]
[/quote]
Van egy -d kapcsolo ami azt nezi, hogy -d van-e vagy sem, vagy directory vagy sem.
if [-d /var/dir ];
then....
else...
fi
idézet:
touch /tmp/no
touch /tmp/part
partitions=`cat /proc/partitions`
echo "$partitions" |grep -c hd[a-d][1-9] > /tmp/no
echo $partitions |grep -o hd[a-d][1-9] > /tmp/part
partitions=`cat /tmp/part`
#hogyan tudn'am kihagyni no 'es tmp file-okat, ugy hogy valtoz'ora viszem egybol
[/quote]
while i in `cat /proc/partitions |awk {'print $4'}`; do
partion=$i
csinalsz vele akarmi, de van itt egy ket feles sor is
done
Where you thought you were going to... were never there.
Where you are ain't no good, unless you get away from there!
#3
Elküldve: 2004. 01. 29. 15:04
idézet:
Ezt írta mocsi:
touch /tmp/no
touch /tmp/part
partitions=`cat /proc/partitions`
echo "$partitions" |grep -c hd[a-d][1-9] > /tmp/no
echo $partitions |grep -o hd[a-d][1-9] > /tmp/part
partitions=`cat /tmp/part`
#hogyan tudn'am kihagyni no 'es tmp file-okat, ugy hogy valtoz'ora viszem egybol
E helyett mondod
while i in `cat /proc/partitions |awk {'print $4'}`; do
partion=$i
csinalsz vele akarmi, de van itt egy ket feles sor is
done
[/quote]
Az egyik változón a sorok száma van, a másikon az eszközök, de azt vedd észre, hogy ez nem tartalmazza a fájl egyébb részeit +a hda -t.
Amúgy a vége az ami igazán gondot okoz:
Hogy lehet kiírni egy txt fájl egyik sorát, vagy awk -nak változót átadni....?
#4
Elküldve: 2004. 01. 29. 15:22
idézet:
Ezt írta Supageo:
Az egyik változón a sorok száma van, a másikon az eszközök, de azt vedd észre, hogy ez nem tartalmazza a fájl egyébb részeit +a hda -t.
Amúgy a vége az ami igazán gondot okoz:
Hogy lehet kiírni egy txt fájl egyik sorát, vagy awk -nak változót átadni....?[/quote]
Nem akarom teljesen leirni helyetted, mert akkor az en gondolkodasmodomat eroltetem rad.
Szerintem az utolso ket blokkot a script-edben egybe lehet vonni azzal a while- utasitassal. Ha meg egy grep+sed-et is hozza passzintasz kapni fogsz egy ciklust, mely vegigmegy az osszes particioneveden:
hda1
hda3
hda5
hdc3
stbstb.
Minden egyes ciklusban egy particio neved lesz a $partitionben amivel azt csinalsz amit akarsz. En ezt szerettem volna "Hint"-elni
Felejtsd el a tempfile-t megoldast, mert mi van akkor ha valamilyen cron script pont akkor uriti? Vagy ezzel vegul is kiadsz olyan adatokat amikhez mas (felhasznalo) is hozzaferhet.
tehat
while i in `cat /proc/partitions |awk {'print $4'}|grep -o hd[a-z][0-9].*`; do
most nem irom le, hogy kell egy dircheck
mount $i $dir/$i
done
Where you thought you were going to... were never there.
Where you are ain't no good, unless you get away from there!
#5
Elküldve: 2004. 01. 29. 15:44
Köszi
Amúgy egy másik scripthez még kéne az az info, hogy hogyan lehet kiírni a txt féjl adott sorát.
#6
Elküldve: 2004. 01. 29. 15:59
partitions=hda1
hda2...
ír ki
, holnap folytatom
#! /bin/sh
#destiny dir check
dir=/mnt/mounts
if cd "$dir" 2>/dev/null;
then echo
else
echo
mkdir /mnt/mounts
cd /mnt/mounts
fi
#if [-d /var/dir];then else fi is lehetett volna
for i in partitions=`cat /proc/partitions|grep -o hd[a-d][1-9]`;
do
echo
echo "$i"
done
#7
Elküldve: 2004. 01. 29. 16:03
idézet:
Ezt írta Supageo:
Oké megvan, most esett le, hogy az i lesz a hda...
Köszi
Amúgy egy másik scripthez még kéne az az info, hogy hogyan lehet kiírni a txt féjl adott sorát.[/quote]
NAGY BOCS:
while helyett irj for -t!!!
amugy meg siman cat esetleg -n hogy tudd hanyas sorrol van szo.
[ 2004. január 29.: mocsi szerkesztette a hozzászólást ]
Where you thought you were going to... were never there.
Where you are ain't no good, unless you get away from there!
#8
Elküldve: 2004. 01. 29. 16:06
idézet:
Ezt írta Supageo:
a while nem ok, de bajos az eredmény, mert
partitions=hda1
hda2...
ír ki
, holnap folytatom
#! /bin/sh
#destiny dir check
dir=/mnt/mounts
if cd "$dir" 2>/dev/null;
then echo
else
echo
mkdir /mnt/mounts
cd /mnt/mounts
fi
#if [-d /var/dir];then else fi is lehetett volna
for i in partitions=`cat /proc/partitions|grep -o hd[a-d][1-9]`;
do
echo
echo "$i"
done[/quote]
nem tudod rogton hozzaadni az erteket a do utan viszont siman.
Where you thought you were going to... were never there.
Where you are ain't no good, unless you get away from there!
#9
Elküldve: 2004. 01. 29. 20:27
Bocsi, hogy ilyen béna vagyok, de fejlődök
#! /bin/sh
#mount dir check
dir=/mnt/mounts
if cd "$dir" 2>/dev/null;
then echo
else
mkdir /mnt/mounts
fi
partitions=`cat /proc/partitions|grep -o hd[a-d][1-9]`
if [ $1 -eq 1 ]; then
#Az egyes param'etert hogyan tehetem az up kifejez'ss'e
#mount section
for i in $partitions;
do
ide=`echo $i|grep -o hd[a-d]`
model=`cat /proc/ide/$ide/model`
if cd "/mnt/mounts/$ide-$model" 2>/dev/null;
then
echo
else
mkdir /mnt/mounts/$ide-$model
fi
if cd "/mnt/mounts/$ide-$model/$i" 2>/dev/null;
then
echo
else
mkdir /mnt/mounts/$ide-$model/$i
fi
mount /dev/$i /mnt/mounts/$ide-$model/$i
done
#umount section
else
for i in $partitions;
do
ide=`echo $i|grep -o hd[a-d]`
model=`cat /proc/ide/$ide/model`
umount /mnt/mounts/$ide-$model/$i
done
if cd /mnt/mounts 2>/dev/null;
then
#Hat itt az a bajom, hogy hogyan
#lehet a find-ot megkerni,
#hogy forditva talalja meg a konyvtarakat
rmdir `find /mnt/mounts`
rmdir `find /mnt/mounts`
rmdir /mnt/mounts
else
echo "They werent mounted with this program"
fi
fi
#10
Elküldve: 2004. 01. 29. 20:46
Where you thought you were going to... were never there.
Where you are ain't no good, unless you get away from there!
#11
Elküldve: 2004. 01. 30. 08:42
Egy baja van, hogy egy csomó dolgot kiír, de nem találta silent módot sem az rmdir, sem az umount-nál.
Így maradt a végére a clear...
#12
Elküldve: 2004. 01. 30. 13:06
idézet:
Ezt írta Supageo:
Köszi, kész a progi, ha valakit nagyon érdekel, akkor elküldhetem...[/quote]
milenne, ha ide kitenned, hogy a nagykozondeg is tanulhasson belole?
(A UNIX Programozói kézikönyv második kiadásából, 1972. június.)
#13
Elküldve: 2007. 03. 27. 08:03
Szóval egy kis segítségre lenne szükségem profi script írókhoz.
Szóval azt kellene megoldanom, hogy adott egy partició és ki kellene listázni úgy, hogy csak az 50MB feletti file-okat mutassa, illetve ezeknek az útvonalát.
Van valakinek tipptyje?
-Minden reggel mikor felkelek tudom, hogy aznap csak egy jó dolog vár rám. A lefekvés! :)
-A Linux nem Windows, de a Windows se Linux
#15
Elküldve: 2007. 03. 31. 11:10
Adott egy script,ami bekéri az user nevet,sé kiírja,hogy összesen mennyi időt volt a rendszerben.
Ezt kikéne egészíteni azzal,hogy adott idő intervallum közt adjon össze.
#!/bin/bash
echo ''A program kiírja,hogy az adott felhasználó mennyi időt töltött a
rendszerben összesen.''
echo '' Add meg a felhasználó nevét''
read x
last|awk -F''('' ' /'$x'/ {print $2}'|awk -F'')'' '{print $1}'|awk -F: 'BEGIN{perc=0} {perc = $1*60 $2} END {print '' '$x' felhasználói ideje:'' perc}'
Hogy lehet azt megadni,hogy egy idő intervallumban , pl: mondjuk 2007.01.02-2007.03.29 intervallumban írja ki a felhasználo összes rendszerben töltött idejét?Greppel szeretném megszűrni,de ezt hoygan?
?
#16
Elküldve: 2007. 06. 27. 10:55
Adott egy file szerver, ahol sok excel és word file-ok vannak. Azonban van, hogy megnyitják és fagyás után egy másolat kerül a file mellé. Általában ezeknek a file-oknak s nincs értelmes nevük illetve nincs kiterjesztésük.
Egy olyan szkriptre, parancsra lenne szükségem, hogy kilistázza az olyan file-okat, amiben nincs pont.
Erre van valakinek ötlete?
Előre is thx
-Minden reggel mikor felkelek tudom, hogy aznap csak egy jó dolog vár rám. A lefekvés! :)
-A Linux nem Windows, de a Windows se Linux
#17
Elküldve: 2008. 05. 15. 08:33
Szóval azt kellene megoldanom, hogy pl. a /home könyvtárat tar-ra mentem.
Viszont nem akarom, hogy az egésze /home könyvtár egy nagy tar file legyen, hanem user mappaként legyen egy tar file.
Tehát pl.
home/user1 lesz user1.tar
home/user2 lesz user2.tar
Jelenleg 50 user van. És mind az 50 userre megadtam egy sort. Azonban ha valamelyik megszűnik vagy új jö létre, akkor azt kézzel kell felvinnem. Ezt akarom automatikusra tenni. Tehát ne kelljen foglalkoznom, hogy jött vagy ment valaki.
Valakinek valami tippje?
Előre is thx..
-Minden reggel mikor felkelek tudom, hogy aznap csak egy jó dolog vár rám. A lefekvés! :)
-A Linux nem Windows, de a Windows se Linux
#18
Elküldve: 2008. 05. 15. 12:17
Idézet: Lenny - Dátum: 2008. máj. 15., csütörtök - 9:33
Szóval azt kellene megoldanom, hogy pl. a /home könyvtárat tar-ra mentem.
Viszont nem akarom, hogy az egésze /home könyvtár egy nagy tar file legyen, hanem user mappaként legyen egy tar file.
Tehát pl.
home/user1 lesz user1.tar
home/user2 lesz user2.tar
Jelenleg 50 user van. És mind az 50 userre megadtam egy sort. Azonban ha valamelyik megszűnik vagy új jö létre, akkor azt kézzel kell felvinnem. Ezt akarom automatikusra tenni. Tehát ne kelljen foglalkoznom, hogy jött vagy ment valaki.
Valakinek valami tippje?
Előre is thx..
find /home -maxdepth 1 -mindepth 1 -type d -exec tar -cf {}.tar {} \;
Valami ilyes?
Our shadows taller than our soul.
“It is often said that before you die your life passes before your eyes. It is in fact true. It's called living.”
#19
Elküldve: 2008. 05. 15. 12:35
---------------------------
#! /bin/bash
WORKDIR=/home
cd $WORKDIR
ls | while read user; do
if [ -d $user ]; then
tar -czf $user.tar.gz /home/$user
fi
done
exit 0
-----------------------------
-Minden reggel mikor felkelek tudom, hogy aznap csak egy jó dolog vár rám. A lefekvés! :)
-A Linux nem Windows, de a Windows se Linux
#20
Elküldve: 2008. 05. 15. 13:22
Idézet: Lenny - Dátum: 2008. máj. 15., csütörtök - 13:35
---------------------------
#! /bin/bash
WORKDIR=/home
cd $WORKDIR
ls | while read user; do
if [ -d $user ]; then
tar -czf $user.tar.gz /home/$user
fi
done
exit 0
-----------------------------
A find akkor is elegansabb
Our shadows taller than our soul.
“It is often said that before you die your life passes before your eyes. It is in fact true. It's called living.”