Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [Opgelost] "Hit <enter> to confirm:" in een bash script.  (gelezen 892 keer)

Offline MauRice2

  • Lid
  • Steunpunt: Nee
[Opgelost] "Hit <enter> to confirm:" in een bash script.
« Gepost op: 2012/12/24, 16:07:50 »
Hi,

Ik wil in een bash script "Hit <enter> to confirm:" automatisch laten gaan, zonder echt op die <Enter> te drukken.

Om een voorbeeld te geven, dh_make vraagt er om.
Als je dh_make in een simpel script verwerkt om als eind resultaat een deb bestand te hebben.
Ben je verplicht om halverwege in het script een <Enter> in te geven.

De bijlage is het script om van emovix-0.9.0.tar.gz om te zetten in emovix_0.9.0-1_amd64.deb

Fijne feestdagen.
« Laatst bewerkt op: 2012/12/26, 20:19:35 door MauRice2 »
MvG,
MauRice
Registered Linux user: 473556

Offline lord4163

  • Lid
    • Simpelbuntu
  • Steunpunt: Nee
Re: "Hit <enter> to confirm:" in een bash script.
« Reactie #1 Gepost op: 2012/12/24, 21:10:27 »
read -p "Press [Enter] key to exit..."
Meer weten over Ubuntu? Bezoek mijn site dan eens:
Simpelbuntu


Offline MauRice2

  • Lid
  • Steunpunt: Nee
Re: "Hit <enter> to confirm:" in een bash script.
« Reactie #2 Gepost op: 2012/12/25, 09:13:39 »
Dank u Lord,
Maar is niet wat ik in bedoel.
De bedoeling is de [Enter] in het script te werken.
#!/bin/bash

read -p "Press [Enter] key to exit..."
# TODO Sending [Enter]
echo "Done without pressing [Enter]"
MvG,
MauRice
Registered Linux user: 473556

Offline Gymnasiast

  • Lid
  • Steunpunt: Nee
Re: "Hit <enter> to confirm:" in een bash script.
« Reactie #3 Gepost op: 2012/12/25, 10:35:19 »
Met een expect-script zou het moeten kunnen. Dat script komt dan neer op
#!/usr/bin/expect -f
set PACKAGE_CLASS [lindex $argv 0]
set LICENSE [lindex $argv 1]
set SOURCE [lindex $argv 2]
spawn dh_make $PACKAGE_CLASS $LICENSE -f ../$SOURCE
expect "Hit <enter> to confirm:"
send "\r"
exit 0

En de code in het script dat je al hebt wordt (vanaf regel 37):
fi

cd $NAME-$VERSION
/pad/naar/expect_script $PACKAGE_CLASS $LICENSE $SOURCE

# Rewrite and editing the control file
« Laatst bewerkt op: 2012/12/25, 10:39:39 door Gymnasiast »
NOBODY expects the Spanish Inquisition!

Offline MauRice2

  • Lid
  • Steunpunt: Nee
Re: "Hit <enter> to confirm:" in een bash script.
« Reactie #4 Gepost op: 2012/12/26, 08:13:19 »
Gymnasiast,

Expect was mij niet bekend, als ik zo lees hier en daar, is het min of meer een shell omgevening.

Jammer, of het via een apparte expect-script,  dan wordt een van de argumenten niet herkent.
Of verwerkt in het bash-script, spawn dh_make .... wordt niet correct uitgevoerd.


cd $NAME-$VERSION
expect << EOF
spawn dh_make $PACKAGE_CLASS $LICENSE -f ../$SOURCE
send "\r"
EOF

# Rewrite and editing the control file


MvG,
MauRice
Registered Linux user: 473556

Offline Gymnasiast

  • Lid
  • Steunpunt: Nee
Re: "Hit <enter> to confirm:" in een bash script.
« Reactie #5 Gepost op: 2012/12/26, 17:42:56 »
Dat onderste script zou dan moeten neerkomen op
cd $NAME-$VERSION
expect << EOF
spawn dh_make $PACKAGE_CLASS $LICENSE -f ../$SOURCE
expect "Hit <enter> to confirm:"
send "\r"
EOF

# Rewrite and editing the control file
Anders stuurt hij meteen een enter na het geven van de opdracht, m.a.w. als die nog bezig is.

Edit: het is voor mij lastig testen als je niet de foutmelding post. Kun je de bovenstaande code uitproberen en als het mislukt, de foutmelding posten?
« Laatst bewerkt op: 2012/12/26, 17:49:12 door Gymnasiast »
NOBODY expects the Spanish Inquisition!

Offline MauRice2

  • Lid
  • Steunpunt: Nee
Re: "Hit <enter> to confirm:" in een bash script.
« Reactie #6 Gepost op: 2012/12/26, 18:50:51 »
Gymnasiast,

De bedoeling van het geheel is een script om een deb-bestand te maken, zodanig dat je met wat aanpassing het ook voor een ander programma kan gebruiken.
Om het moment zit alleen de control en de rules bestand in verwerkt, later zal dat worden uitgebreid met postinst, postrm, prerm en andere bestanden.
Hoe meer ik begrijp hoe en wat er nodig is om vanaf een tar-ball een deb-bestand te maken hoe uitgebreider deze zal zijn.
Iets in de geest van en RPM spec-bestand, hiermee heb normaal gezien geen problemen mee.

dh_make maakt in de uitgepakte tar-bal, de debian map aan met de nodige bestanden die je later nodig heb met dpkg-buildpackage.
Maar blijkbaar wordt dat niet uitgevoerd in de expect-omgeving via de spwan opdracht.
Dus wordt het voorlopig halverwege het script op [Enter] gedrukt.

Het eind met expect.
Citaat
emovix-0.9.0/scripts/
emovix-0.9.0/scripts/Makefile.in
emovix-0.9.0/scripts/Makefile.am
emovix-0.9.0/scripts/mkmovixiso
emovix-0.9.0/scripts/lf-mkmovixiso
emovix-0.9.0/scripts/movix-conf.in
emovix-0.9.0/scripts/movix-version.in
emovix-0.9.0/scripts/mkmovixiso.sh
emovix-0.9.0/scripts/mkmvxiso.bat
spawn dh_make -s -c GPL3 -f ../emovix-0.9.0.tar.gz
Maintainer name  : Bob de Bouwer
Email-Address    : <bob@debouwer.eu>
Date             : Wed, 26 Dec 2012 18:05:24 +0100
Package Name     : emovix
Version          : 0.9.0
License          : gpl3
Type of Package  : Single
Hit <enter> to confirm: ./Emovix: line 48: ./debian/control: No such file or directory
./Emovix: line 65: ./debian/rules: No such file or directory
dpkg-buildpackage: export CFLAGS from dpkg-buildflags (origin: vendor): -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security
dpkg-buildpackage: export CPPFLAGS from dpkg-buildflags (origin: vendor): -D_FORTIFY_SOURCE=2
dpkg-buildpackage: export CXXFLAGS from dpkg-buildflags (origin: vendor): -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security
dpkg-buildpackage: export FFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export LDFLAGS from dpkg-buildflags (origin: vendor): -Wl,-Bsymbolic-functions -Wl,-z,relro
tail: cannot open `debian/changelog' for reading: No such file or directory
dpkg-buildpackage: error: tail of debian/changelog gave error exit status 1

Emovix is genomen om het een en ander uit te proberen.
Het vraag niet veel om te compileren, minumum build-essential is voldoende.
Puls wat je nodig heb om deb-bestand te maken.

Ik weet dat je met alien een rpm-bestand kan omzetten naar een deb-bestand.
Maar mooier is toch een deb-bestand maken en niet via checkinstall.
MvG,
MauRice
Registered Linux user: 473556

Offline axelv

  • Lid
  • Steunpunt: Nee
Re: "Hit <enter> to confirm:" in een bash script.
« Reactie #7 Gepost op: 2012/12/26, 20:03:22 »
Werkende versie:
#!/bin/bash
# Script to make a deb package

# The source tar-ball and other info
NAME=emovix
VERSION=0.9.0
SOURCE=$NAME-$VERSION.tar.gz
PACKAGE_CLASS=-s
LICENSE="-c GPL3"

SECTION=Video
PRIORITY=extra
ARCH=any
MAINTAINER="Bob de Bouwer <bob@debouwer.eu>"
URL="http://movix.sourceforge.net/"
BUILD_DEPENDS="debhelper (>= 8.0.0), autotools-dev"
DEPENDS="\${shlibs:Depends}, \${misc:Depends}"
SHORT_DISCRIPTION="A small linux distro to automatically play audio video cds"
LONG_DISCRIPTION="A micro Linux distro meant to be embedded in a CD together with all video/audio files you want,
 so that the CD will be able to boot and automagically play all of its own files. "

# Cleaning-Up the first time
rm -f *.orig.*
rm -rf $NAME-$VERSION

# Making the deb package
EXTENSION=${SOURCE##*.}
if [ "$EXTENSION" = "gz" ]; then
tar xfvz $SOURCE
elif [ "$EXTENSION" = "bz2" ]; then
tar xfvj $SOURCE
elif [ "$EXTENSION" = "xz" ]; then
tar xfvJ $SOURCE
else
echo "$SOURCE file is not a tar-ball."
exit 0
fi

cd $NAME-$VERSION
yes "" | dh_make $PACKAGE_CLASS $LICENSE -f ../$SOURCE
# TODO 'Hit <enter> to confirm:' action

# Rewrite and editing the control file
cat > ./debian/control << EOF
Source: $NAME
Section: $SECTION
Priority: $PRIORITY
Maintainer: $MAINTAINER
Build-Depends: $BUILD_DEPENDS
Standards-Version: 3.9.2
Homepage: $URL

Package: $NAME
Architecture: $ARCH
Depends: $DEPENDS
Description: $SHORT_DISCRIPTION
 $LONG_DISCRIPTION
EOF

# Rewrite and editing the rules file
cat > ./debian/rules << EOF
#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

%:
dh \$@
EOF

dpkg-buildpackage -rfakeroot -us -uc

# Cleaning-Up after succes
cd ..
rm -f *.debian.*
rm -f *.orig.*
rm -f *.dsc
rm -f *.changes
rm -rf $NAME-$VERSION

Uitvoeren:
chmod +x script.sh  && sh script.sh
Veel plezier!  ^-^

Offline MauRice2

  • Lid
  • Steunpunt: Nee
Re: "Hit <enter> to confirm:" in een bash script.
« Reactie #8 Gepost op: 2012/12/26, 20:18:31 »
Thanks Axelv,

Dit werkt, het is simpel maar je moet er maar opkomen.
Nu kan ik verder spelen.
MvG,
MauRice
Registered Linux user: 473556