/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
BASH script
Fra : Ivar Madsen


Dato : 18-09-03 00:30


Carsen skriv tiderliger i dag på denne kanal at det er letter at brænde CD'er
med en komandolinie end med de grafiske interface til cdrecord, og det har han
ret i, men det er for besværligt at huske på alle de parameter der skal til, så
derfor vil jeg godt benytte lejligheden til at lære lidt om BASH script,,,

Men, min søgen i linuxbog.dk har ikke afklaret et par problamatikker.

Jeg forstiller mig at lave en brændCD og så en brændCD.conf, indeholdende de
forskellige parameter der ligger fast fra gang til gang.

`---brændCD
drev=0,0,0
speedR=52
speedRW=32
fs=12m


ogsåvidere

`---brændCD
!#/usr/bin/bash

#læse argumenter fra kaldet


#hent variable fra brændCD.conf

check skivetype, sæt bspeed=speedR eller speedRW


if arg1 = slet
then cdrecord -v bland=arg2 speed=bspeed dev=drev
fi
if arg1 = iso
then cdrecord -v fs=fs speed=Bspeed dev=drev arg2

og så vider,


--
Med venlig hilsen

Ivar

 
 
Jacob Bunk Nielsen (18-09-2003)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 18-09-03 00:38

Ivar Madsen <news-@milli.dk> writes:

> Men, min søgen i linuxbog.dk har ikke afklaret et par problamatikker.

Hvis du forventer at få hjælp til afklaringen var det nok en plan at
fortælle hvilke problematikker det drejer sig om.

--
Jacob - www.bunk.cc
I'm not prejudiced, I hate everyone equally.

Ivar Madsen (18-09-2003)
Kommentar
Fra : Ivar Madsen


Dato : 18-09-03 00:58

Jacob Bunk Nielsen wrote:


> Hvis du forventer at få hjælp til afklaringen var det nok en plan at
> fortælle hvilke problematikker det drejer sig om.

hvordan får jeg indlæst indeholdet i .conf filen så variablerne indeholder
det de er defineret til i .conf filen.
Hvilke variable argumenterne til script filen hedder, måske hvordan man kalder
en funktion.
Hvad sker der med output fra f.eks cdrecord når den kaldes fra scriptet, skal
det styre det vider ud til brugeren, eller havner det ude på konsolen scriptet
kaldes fra.

--
Med venlig hilsen

Ivar

Ivar Madsen (18-09-2003)
Kommentar
Fra : Ivar Madsen


Dato : 18-09-03 01:08

Ivar Madsen wrote:

> Hvad sker der med output fra f.eks cdrecord når den kaldes fra scriptet, skal
> det styre det vider ud til brugeren, eller havner det ude på konsolen scriptet
> kaldes fra.

Nå ja, det er jo meget simpelt at chekke det,,,
Det går forøvigt direkte ud på konsolen, hmm kunne godt tænke mig at kunne styre
det, er det simpelt at nuppe det inden det går på konsolen?

--
Med venlig hilsen

Ivar

Jesper Louis Anderse~ (18-09-2003)
Kommentar
Fra : Jesper Louis Anderse~


Dato : 18-09-03 11:50

> hvordan får jeg indlæst indeholdet i .conf filen
> så variablerne indeholder

source din conf-fil, man sh

--
j.

Jacob Bunk Nielsen (18-09-2003)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 18-09-03 01:14

Ivar Madsen <news-@milli.dk> writes:

> Det går forøvigt direkte ud på konsolen, hmm kunne godt tænke mig at
> kunne styre det, er det simpelt at nuppe det inden det går på
> konsolen?

Du kan jo bare hælde det igennem en pipe og så gøre et eller andet ved
det.

--
Jacob - www.bunk.cc
Above all else -- sky.

Heine Laursen (18-09-2003)
Kommentar
Fra : Heine Laursen


Dato : 18-09-03 01:09

Ivar Madsen <news-@milli.dk> wrote in
news:3f68ee97$0$48911$edfadb0f@dtext02.news.tele.dk:

> Men, min søgen i linuxbog.dk har ikke afklaret et par problamatikker.

Måske The Linux Documentation Projeckt kan hjælpe. http://www.tldp.org

> Jeg forstiller mig at lave en brændCD og så en brændCD.conf,
> indeholdende de forskellige parameter der ligger fast fra gang til
> gang.
>
> `---brændCD
> drev=0,0,0
> speedR=52
> speedRW=32
> fs=12m

indhold af sti-til-din-config-fil
$drev='dev=0,0,0'
$speedR='speed=52'
speedRW='speed=32'
$fs='fs=12m'
$cdrecord=sti-til-cdrecord
.....

> ogsåvidere
>
> `---brændCD
> !#/usr/bin/bash
>
> #læse argumenter fra kaldet
>
>
> #hent variable fra brændCD.conf
>
> check skivetype, sæt bspeed=speedR eller speedRW
>
>
> if arg1 = slet
> then cdrecord -v bland=arg2 speed=bspeed dev=drev
>
> fi
> if arg1 = iso
> then cdrecord -v fs=fs speed=Bspeed dev=drev arg2
>
> og så vider,
>
>

!#/bin/bash
.. sti-til-din-config-fil
case "$1" in
   slet)
       $cdrecord -v $drev -blank=$2 $speedRW
    ;;

   iso)
       $cdrecord -v fs=$fs speed=$speedR -dev=$drev $2
    ;;

   *)
       $echo "Komandoen slet eller iso skal angives først"
    ;;
esac

Dette er ikke testet om det virker!

--
Mvh
Heine Laursen

Heine Laursen (18-09-2003)
Kommentar
Fra : Heine Laursen


Dato : 18-09-03 01:15

Heine Laursen <gozar@myrealbox.com> wrote in
news:Xns93FA162749550gozarmyrealboxcom@62.243.74.163:

Hmm retter lige lidt skyndheds fejl!

> indhold af sti-til-din-config-fil
> $drev='dev=0,0,0'
> $speedR='speed=52'

$speedRW='speed=32'
$cdrecord=sti-til-cdrecord

> !#/bin/bash
> . sti-til-din-config-fil
> case "$1" in
> slet)
> $cdrecord -v $drev -blank=$2 $speedRW
> ;;
>
> iso)
> $cdrecord -v fs=$fs speed=$speedR -dev=$drev $2
> ;;
>
> *)

echo "Komandoen slet eller iso skal angives først"

> ;;
> esac
>
> Dette er ikke testet om det virker!
>

--
Mvh
Heine Laursen

Ivar Madsen (18-09-2003)
Kommentar
Fra : Ivar Madsen


Dato : 18-09-03 02:05

Heine Laursen wrote:


Jeg kan næsten læse og forstå.

> indhold af sti-til-din-config-fil
> $drev='dev=0,0,0'
> $speedR='speed=52'
> speedRW='speed=32'
> $fs='fs=12m'
> $cdrecord=sti-til-cdrecord
> ....


> !#/bin/bash
> . sti-til-din-config-fil

Det udføre så .conf filen, der sætter variablene, skal den så ikke også starte
med
!#/binm/bash

?

> case "$1" in

Ja, case er klart beder end "if then else" til dette.

> slet)
> $cdrecord -v $drev -blank=$2 $speedRW
> ;;
>
> iso)
> $cdrecord -v fs=$fs speed=$speedR -dev=$drev $2
> ;;

Når $speedR er sat til 'speed=52' så må det vare være $speedR eller $speedRW og
ikke speed=$speedR. Men om det er speed=52 eller speed=32 der skal bruges
afhænger jo af mediet, det er derfor jeg ville kalde en funktion der chekker
skivetype (CD-R eller CD-RW) og så sætter $Bspeed, således som du også har
skrevet dem under "slet" funktionen. Eller er det vare mig der fatter minus?

kan man gøre noget i retningen af således

iso)
cdrecord -v $fs [funktion'speedtype'] $dev $2

Hvor der så i kaldet af cdrecord kaldes en funktion der bestemmer om det er en
CD-R eller CD-RW og retunere speed=52 eller speed=32

der er tænkt svare til hvis man på komandopromten skriver

cdrecord -v fs=12m speed=52 dev=0,0,0 /sti/til/fil.iso

> *)
> $echo "Komandoen slet eller iso skal angives først"



--
Med venlig hilsen

Ivar

Heine Laursen (18-09-2003)
Kommentar
Fra : Heine Laursen


Dato : 18-09-03 08:05

Ivar Madsen <news-@milli.dk> wrote in
news:3f6904d8$0$48911$edfadb0f@dtext02.news.tele.dk:

> Heine Laursen wrote:

> Det udføre så .conf filen, der sætter variablene, skal den så ikke
> også starte med
> !#/binm/bash

Jo det skal der. Der skal heller ikke $ tegn foran når en variabel erklæres
som jeg havde gjordt.


> Når $speedR er sat til 'speed=52' så må det vare være $speedR eller
> $speedRW og ikke speed=$speedR. Men om det er speed=52 eller speed=32
> der skal bruges afhænger jo af mediet, det er derfor jeg ville kalde
> en funktion der chekker skivetype (CD-R eller CD-RW) og så sætter
> $Bspeed, således som du også har skrevet dem under "slet" funktionen.
> Eller er det vare mig der fatter minus?
>
> kan man gøre noget i retningen af således
>
> iso)
> cdrecord -v $fs [funktion'speedtype'] $dev $2
>

så skal du have noget i retning af:
!#/bin/bash
.. sti-til-din-config-fil

speed() {
if [ "$1" -eq "slet" ]
then
return "-speed=$speedRW"
else
if [ "$1 " -eq "iso" ]
return "-speed=$speedR"
else
echo "Arg 1 skal angives"
fi
fi
}

case "$1" in
   iso)
       $cdrecord -v $fs speed $dev $2
   ;;
esac

Men der det ikke dobbelt arbejdte! nu bliver arg1 chekket 2 gange!
Og jeg er slet ikke sikker på at return overhovedet virker på den måde!
Iøvrigt kunde jeg også have brugt case her.

> Hvor der så i kaldet af cdrecord kaldes en funktion der bestemmer om
> det er en CD-R eller CD-RW og retunere speed=52 eller speed=32
>
> der er tænkt svare til hvis man på komandopromten skriver
>
> cdrecord -v fs=12m speed=52 dev=0,0,0 /sti/til/fil.iso

Hvis du kigger efter gør det første script også dette. jeg sætter bare
$speedRW ind i slet og $speedR ind i iso hvilket jeg abselut syntes er
nemmere end at skal til at lave en funkton til at udføre dobbelt arbejde!

--
Mvh
Heine Laursen

Ivar Madsen (18-09-2003)
Kommentar
Fra : Ivar Madsen


Dato : 18-09-03 11:55

Heine Laursen wrote:

> Hvis du kigger efter gør det første script også dette. jeg sætter bare
> $speedRW ind i slet og $speedR ind i iso hvilket jeg abselut syntes er
> nemmere end at skal til at lave en funkton til at udføre dobbelt arbejde!

At det er $speedRW i slet funktionen, det er klart, du kan jo ikke slette en R
skive. Men når der skal brændes så kan det gøres hurtiger på en R skive, end på
en RW skive, det er derfor intersant at vide hvilken skive der sider i når man
skal skrive på skiven. Men jeg ser at cdrecord sætter hastigheden ned til 24 på
en RW skive, så måske speed parameteren til cdrecord bare sætter max speed, og
så kan man jo bare sætte den til max,,,

--
Med venlig hilsen

Ivar

Mogens Kjaer (18-09-2003)
Kommentar
Fra : Mogens Kjaer


Dato : 18-09-03 12:09

Ivar Madsen wrote:
....
> Jeg forstiller mig at lave en brændCD og så en brændCD.conf, indeholdende de
> forskellige parameter der ligger fast fra gang til gang.
....

Måske kunne du i første omgang nøjes med at hårdkode
parameterne i scriptet...

På en DVD brænder (der kan brænde CD-R, CD-RW, DVD+R og DVD+RW)
bruger jeg følgende script:

-------------cut------------------ Burn
#!/bin/bash

if [ ! -f /home/cdmaster/master.iso ]
then
echo File /home/cdmaster/master.iso does not exist.
exit
fi

# determine media:

X=`cdrecord-wrapper.sh -dev=2,0,0 -atip 2>/dev/null`
status=$?

if test $status -eq 255
then
echo -e "\a"
echo "No disk"
exit 1
fi

echo $X | fgrep -q "Is erasable"
if test $? -eq 0
then
echo "Media is CD-RW"
cdrecord -dev=2,0,0 -gracetime=2 -blank=fast -speed=10 -v -pad -eject
/home/cdmaster/master.iso
echo "All done!"
echo -e "\a"
exit 0
fi

echo $X | fgrep -q "Is not erasable"
if test $? -eq 0
then
echo "Media is CD-R"
cdrecord -dev=2,0,0 -gracetime=2 -speed=12 -v -pad -eject
/home/cdmaster/master.iso
echo "All done!"
echo -e "\a"
exit 0
fi

echo $X | fgrep -q "book type: DVD-ROM"
if test $? -eq 0
then
echo "Media is DVD+R"
cdrecord-wrapper.sh -gracetime=2 -dev=2,0,0 -v -pad -eject
/home/cdmaster/master.iso
echo "All done!"
echo -e "\a"
exit 0
fi

echo $X | fgrep -q "book type: DVD+RW"
if test $? -eq 0
then
echo "Media is DVD+RW"
growisofs -dvd-compat -use-the-force-luke -Z
/dev/dvd=/home/cdmaster/master.iso
echo "All done!"
echo -e "\a"
exit 0
fi

echo "Unknown media."
echo -e "\a"
echo $X

------------------cut------------------

(Nogle af linierne er knækket)

Scriptet spørger først, hvilket medie der er i,
og kalder så cdrecord-ProDVD hvis det er et DVD+R
medie, cdrecord hvis det er CD-R eller CD-RW, og
growisofs hvis det er DVD+RW

Jeg har så et andet lille script til at lave isofilen med:

------------------cut------------------ Makeiso
#!/bin/bash

mkisofs -o /home/cdmaster/master.iso -r -J -v $1
------------------cut------------------

Skal man brænde directoriet /home/user/gulerod er det bare:

1. læg en passende skive i drevet
2. Makeiso /home/user/gulerod
3. Burn

Mogens

--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk


Ivar Madsen (18-09-2003)
Kommentar
Fra : Ivar Madsen


Dato : 18-09-03 13:05

Mogens Kjaer wrote:


> Måske kunne du i første omgang nøjes med at hårdkode
> parameterne i scriptet...

Det kunne man naturligvis,,,

> På en DVD brænder (der kan brænde CD-R, CD-RW, DVD+R og DVD+RW)
> bruger jeg følgende script:

Jeg har ikke cdrecord-wapper.sh kunne jeg lokke det ud af dig?

Jeg har kikket efter bash script på systemmet, for at lure af hvordan man gør
hvad, men de er alle sammen sh script, hvor stor forskæld er der på dem? vil
jeg få noget udaf at lure sh af, for at lave bash,,,

> -------------cut------------------ Burn
> #!/bin/bash

> echo $X | fgrep -q "Is erasable"
> if test $? -eq 0
> then
> echo "Media is CD-RW"
> cdrecord -dev=2,0,0 -gracetime=2 -blank=fast -speed=10 -v -pad -eject
> /home/cdmaster/master.iso
> echo "All done!"
> echo -e "\a"
> exit 0
> fi
>
> echo $X | fgrep -q "Is not erasable"
> if test $? -eq 0
> then
> echo "Media is CD-R"
> cdrecord -dev=2,0,0 -gracetime=2 -speed=12 -v -pad -eject
> /home/cdmaster/master.iso
> echo "All done!"
> echo -e "\a"
> exit 0
> fi

........

> echo $X | fgrep -q "book type: DVD-ROM"
> if test $? -eq 0
> then
> echo "Media is DVD+R"
> cdrecord-wrapper.sh -gracetime=2 -dev=2,0,0 -v -pad -eject
> /home/cdmaster/master.iso
> echo "All done!"
> echo -e "\a"
> exit 0
> fi
>

.........

>
> echo "Unknown media."
> echo -e "\a"
> echo $X
>
> ------------------cut------------------
>
> (Nogle af linierne er knækket)

Ja, det er de tre der brænder skiven.

--
Med venlig hilsen

Ivar

Mogens Kjaer (18-09-2003)
Kommentar
Fra : Mogens Kjaer


Dato : 18-09-03 14:41

Ivar Madsen wrote:
> Mogens Kjaer wrote:
...
> Jeg har ikke cdrecord-wapper.sh kunne jeg lokke det ud af dig?
....

Det behøver du kun, hvis du skal bruge cdrecord-ProDVD til at
brænde DVD'ere. Scriptet sætter en licensparameter og kalder
cdrecord-ProDVD

Hvis du kun skal brænde CD-R og CD-RW kan du kalde cdrecord i stedet
for wrapperscriptet.

Mogens


--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk


Ivar Madsen (18-09-2003)
Kommentar
Fra : Ivar Madsen


Dato : 18-09-03 15:13

Mogens Kjaer wrote:

> Hvis du kun skal brænde CD-R og CD-RW kan du kalde cdrecord i stedet
> for wrapperscriptet.

Ja ok, lige i farten lagde jeg mest mærke til at det er det du kalder for at
chekke hvilken type skive du har lagt i drevet,,,

--
Med venlig hilsen

Ivar

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste