HWSW Informatikai Kerekasztal: bash script kérdés - HWSW Informatikai Kerekasztal

Ugrás a tartalomhoz

Mellékleteink: HUP | Gamekapocs

  • (2 Oldal)
  • +
  • 1
  • 2
  • Nem indíthatsz témát.
  • A téma zárva.

bash script kérdés

#1 Felhasználó inaktív   Supageo 

  • Tag
  • PipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 354
  • Csatlakozott: --

Elküldve: 2004. 01. 29. 14:28

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

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
Ha deréknek születtél, ha a természet egyenes észt és érzékeny szívet adott neked, kerüld egy időre az emberek társaságát és tanulmányozd magadat

#2 Felhasználó inaktív   mocsi 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 6.848
  • Csatlakozott: --

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 come from... is gone.
Where you thought you were going to... were never there.
Where you are ain't no good, unless you get away from there!

#3 Felhasználó inaktív   Supageo 

  • Tag
  • PipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 354
  • Csatlakozott: --

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....?
Ha deréknek születtél, ha a természet egyenes észt és érzékeny szívet adott neked, kerüld egy időre az emberek társaságát és tanulmányozd magadat

#4 Felhasználó inaktív   mocsi 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 6.848
  • Csatlakozott: --

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 come from... is gone.
Where you thought you were going to... were never there.
Where you are ain't no good, unless you get away from there!

#5 Felhasználó inaktív   Supageo 

  • Tag
  • PipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 354
  • Csatlakozott: --

Elküldve: 2004. 01. 29. 15:44

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.
Ha deréknek születtél, ha a természet egyenes észt és érzékeny szívet adott neked, kerüld egy időre az emberek társaságát és tanulmányozd magadat

#6 Felhasználó inaktív   Supageo 

  • Tag
  • PipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 354
  • Csatlakozott: --

Elküldve: 2004. 01. 29. 15:59

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
Ha deréknek születtél, ha a természet egyenes észt és érzékeny szívet adott neked, kerüld egy időre az emberek társaságát és tanulmányozd magadat

#7 Felhasználó inaktív   mocsi 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 6.848
  • Csatlakozott: --

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 come from... is gone.
Where you thought you were going to... were never there.
Where you are ain't no good, unless you get away from there!

#8 Felhasználó inaktív   mocsi 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 6.848
  • Csatlakozott: --

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 come from... is gone.
Where you thought you were going to... were never there.
Where you are ain't no good, unless you get away from there!

#9 Felhasználó inaktív   Supageo 

  • Tag
  • PipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 354
  • Csatlakozott: --

Elküldve: 2004. 01. 29. 20:27

A progi így néz most ki, de holnap kész lesz, funkcionálissan ok, de csúnya, ahol most gondom van azt odaírtam

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
Ha deréknek születtél, ha a természet egyenes észt és érzékeny szívet adott neked, kerüld egy időre az emberek társaságát és tanulmányozd magadat

#10 Felhasználó inaktív   mocsi 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 6.848
  • Csatlakozott: --

Elküldve: 2004. 01. 29. 20:46

probald meg a du kimenetet felhasznalni, az pont ugy csinalja :)
Where you come from... is gone.
Where you thought you were going to... were never there.
Where you are ain't no good, unless you get away from there!

#11 Felhasználó inaktív   Supageo 

  • Tag
  • PipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 354
  • Csatlakozott: --

Elküldve: 2004. 01. 30. 08:42

Köszi, kész a progi, ha valakit nagyon érdekel, akkor elküldhetem.
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...
Ha deréknek születtél, ha a természet egyenes észt és érzékeny szívet adott neked, kerüld egy időre az emberek társaságát és tanulmányozd magadat

#12 Felhasználó inaktív   giotto 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 6.512
  • Csatlakozott: --

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 rendszerek száma tízre nőtt és még több várható".
(A UNIX Programozói kézikönyv második kiadásából, 1972. június.)

#13 Felhasználó inaktív   Lenny 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 5.995
  • Csatlakozott: --

Elküldve: 2007. 03. 27. 08:03

Látjátok én használom a keresőt.. :D

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? :D
-A biztonsági öv lehet hogy korlátoz a mozgásban, de még mindig nem annyira mint a tolószék.
-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

#14 Felhasználó inaktív   Zsugabubus2 

  • Tag
  • PipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 286
  • Csatlakozott: --

Elküldve: 2007. 03. 27. 11:32

find /adott/particio -xdev -size +50M

#15 Felhasználó inaktív   xgabo 

  • Tag
  • PipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 144
  • Csatlakozott: --

Elküldve: 2007. 03. 31. 11:10

Sziasztok!
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?
?
,,Tanulj,hogy segíthess másokon!"

#16 Felhasználó inaktív   Lenny 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 5.995
  • Csatlakozott: --

Elküldve: 2007. 06. 27. 10:55

A következőre lenne szükségem:

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 :respect:
-A biztonsági öv lehet hogy korlátoz a mozgásban, de még mindig nem annyira mint a tolószék.
-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 Felhasználó inaktív   Lenny 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 5.995
  • Csatlakozott: --

Elküldve: 2008. 05. 15. 08:33

Ismét a profi szkript írókhoz fordulok... :)

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.. :respect:
-A biztonsági öv lehet hogy korlátoz a mozgásban, de még mindig nem annyira mint a tolószék.
-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 Felhasználó inaktív   kroozo 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 21.900
  • Csatlakozott: --

Elküldve: 2008. 05. 15. 12:17

Idézet: Lenny - Dátum: 2008. máj. 15., csütörtök - 9:33

Ismét a profi szkript írókhoz fordulok... :)

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.. :respect:

 find /home -maxdepth 1 -mindepth 1 -type d -exec tar -cf {}.tar {} \;


Valami ilyes?
And as we wind on down the road
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 Felhasználó inaktív   Lenny 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 5.995
  • Csatlakozott: --

Elküldve: 2008. 05. 15. 12:35

Yv@n kolléga adott egy jó megoldást... :)
---------------------------
#! /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 biztonsági öv lehet hogy korlátoz a mozgásban, de még mindig nem annyira mint a tolószék.
-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 Felhasználó inaktív   kroozo 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 21.900
  • Csatlakozott: --

Elküldve: 2008. 05. 15. 13:22

Idézet: Lenny - Dátum: 2008. máj. 15., csütörtök - 13:35

Yv@n kolléga adott egy jó megoldást... :)
---------------------------
#! /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 :D
And as we wind on down the road
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.”

Téma megosztása:


  • (2 Oldal)
  • +
  • 1
  • 2
  • Nem indíthatsz témát.
  • A téma zárva.

1 felhasználó olvassa ezt a témát.
0 felhasználó, 1 vendég, 0 anonim felhasználó