Nieuws:

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

Auteur Topic: Antwoord doorgeven  (gelezen 4593 keer)

Offline jmbouma

  • Lid
Antwoord doorgeven
« Gepost op: 2011/03/30, 20:38:13 »
Hoe kan ik in een bash script een antwoord doorgeven?
Bv het prog "chkdsk c: /r" vraagt direct om een antwoord te geven omdat bestanden op de c-drive actief zijn.
Hierdoor dien je op te geven een J of N.

Greetz,

Re: Antwoord doorgeven
« Reactie #1 Gepost op: 2011/03/30, 20:59:11 »
Ik geloof dat je bash en batch script door elkaar haalt. In elk geval, welkom op dit forum en eh... Ik ga dit overlaten aan een van de eh... vriendelijkere... mensen op dit forum om jouw uit te leggen wat het probleem met je vraag is.
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Re: Antwoord doorgeven
« Reactie #2 Gepost op: 2011/03/31, 01:17:47 »
Ik zal al een beetje vriendelijker zijn:

het commando chkdsk c: /r zal NOOIT werken onder linux, om de simpele reden dat het bestandsysteem helemaal geen c: kent, dat is iets windows specifiek.
In linux hebben alle disks een naam als /dev/sda, /dev/sdb, ...

Ik heb geprobeert om hier zo duidelijk mogelijk uit te leggen hoe het linux file-system in elkaar zit:
http://leerubuntu.org/mappenstructuur.html

Verder bestaat chkdsk helemaal niet voor linux, een linux alternatief is fsck, en normaal gezien hebben zulke dingen wel een force mode, waardoor je alle vragen kan vermijden. Wees echter altijd zeer waakzaam met de force mode, op die manier gaat deze alles uitvoeren wat je in het commando hebt gezet zonder bij twijfel toch maar even te vragen of het wel echt moet.

Als je bezig bent om een windows script te maken ben je hier aan het verkeerde adres, veel leden hier zullen dat misschien ook wel kennen, maar verkiezen om daar op dit forum niet verder op in te gaan, omdat hun hobby linux is, en niet windows.
« Laatst bewerkt op: 2011/03/31, 01:21:45 door Ward De Ridder »
http://leerubuntu.org (ubuntu zonder moeilijke woorden)
VoidWarranties (Hackerspace) Antwerpen
Microsoft isn't evil, they just make really crappy operating systems. - Linus Torvalds

Re: Antwoord doorgeven
« Reactie #3 Gepost op: 2011/03/31, 10:07:57 »
Ik denk dat de topicstarter bedoelt: hoe kan ik een bash-script een ja/nee-vraag laten stellen? En dat hij vervolgens een voorbeeld geeft van chkdsk op Windows.

Als dat zo is, had hij beter het voorbeeld van apt-get kunnen geven. Als je die gebruikt om een pakket te installeren dan vraagt die of je door wilt gaan waarop je 'j' of 'n' invult. Hij wil dan weten hoe je dat zo'n ja/nee-vraag kunt laten stellen in een bash-scriptje.

EDIT:
Ik vond dit stukje code:
echo -n "Do you want to exit ? (y/n)"
read ans
[ $ans == "y" ] && echo "Exiting ......" && sleep 2 && exit 0 || echo "Good"
« Laatst bewerkt op: 2011/03/31, 10:17:07 door Gymnasiast »
NOBODY expects the Spanish Inquisition!

Offline jmbouma

  • Lid
Re: Antwoord doorgeven
« Reactie #4 Gepost op: 2011/03/31, 10:17:44 »
Dank alvast voor de vriendelijke reacties.

Moet er wel bijzeggen dat ik cygwin draai op WinXP.
Hierdoor is het mogelijk om ook in bash de windows commando's op te nemen in scripting.
Als ik het commando "chkdsk :c /r" opgeef start het op en wacht op input, een J of een N.
Aangezien ik dit commando in een script heb staan wil ik het antwoord meegeven, ik weet dat het kan enkel niet meer hoe.
Stond in een ander script bij een van de vorige werkgevers.

Greetz,

Re: Antwoord doorgeven
« Reactie #5 Gepost op: 2011/03/31, 10:39:31 »
Had je het stukje code in mijn edit al geprobeerd?

Het commando 'read' zou als het goed is onderdeel van bash moeten zijn, dus werkt het hopelijk ook op Cygwin.
NOBODY expects the Spanish Inquisition!

Offline jmbouma

  • Lid
Re: Antwoord doorgeven
« Reactie #6 Gepost op: 2011/03/31, 15:13:12 »
Het stukje code gaat uit van standaard input via toetsenbord.
Dat is nu net niet het probleem/vraag.
Het gaat erom om dit antwoord van J in de commandregel op te nemen.
Iets in de zin van "chkdsk :c /r < echo J"

Ik wil dit regelmatig via de cron afstarten om problemen voor te zijn.

Greetz.

Re: Antwoord doorgeven
« Reactie #7 Gepost op: 2011/03/31, 15:17:05 »
yes j | chkdsk c: /r
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline jmbouma

  • Lid
Re: Antwoord doorgeven
« Reactie #8 Gepost op: 2011/03/31, 18:01:45 »
Helaas werkt niet, moet ctrl-C gebruiken om eruit te komen.
Andere optie's? Staat me iets bij met het echo-command...hoop opties al getest maar helaas.

Greetz

Re: Antwoord doorgeven
« Reactie #9 Gepost op: 2011/03/31, 18:09:12 »
Het is geen antwoord dat voor alle programma's toe te passen is, maar er staat me er iets van bij dat je chkdsk /X /R C: kunt gebruiken om de sluiting van bestanden te forceren (wat dus antwoord geeft op de ja/nee-vraag van chkdsk).

EDIT: misschien werkt echo j | chkdsk /r C: ?
« Laatst bewerkt op: 2011/03/31, 18:15:48 door Gymnasiast »
NOBODY expects the Spanish Inquisition!

Offline jmbouma

  • Lid
Re: Antwoord doorgeven
« Reactie #10 Gepost op: 2011/03/31, 18:49:48 »
Helaas, geen van tweeën.

Re: Antwoord doorgeven
« Reactie #11 Gepost op: 2011/03/31, 21:00:29 »
Je kan ook het imputcommando gebruiken dat Gymnasiast eerder aanhaalde om Ja of Nee te lezen en daar stel je dan zelf de vraag bij of ze chdisk willen uitvoeren. Indien Ja chdisk uitvoeren zonder om toestemming te vragen.

Offline jmbouma

  • Lid
Re: Antwoord doorgeven
« Reactie #12 Gepost op: 2011/03/31, 21:26:03 »
Je kan ook het imputcommando gebruiken dat Gymnasiast eerder aanhaalde om Ja of Nee te lezen en daar stel je dan zelf de vraag bij of ze chdisk willen uitvoeren. Indien Ja chdisk uitvoeren zonder om toestemming te vragen.
Helaas, via een cron is er geen user actie mogelijk.

Offline jmbouma

  • Lid
Re: Antwoord doorgeven
« Reactie #13 Gepost op: 2011/03/31, 21:31:53 »
Met expect-command schijnt ook één-en-ander mogelijk te zijn....
manpage nogal lang...en taai... :|...tbc...

Re: Antwoord doorgeven
« Reactie #14 Gepost op: 2011/03/31, 23:17:06 »
http://forum.ubuntu-nl.org/server-en-netwerk/aanmaken-meedere-samba-users/msg688307/#msg688307

Hier is een voorbeeld te vinden van het gebruik van expect.

In jouw geval iets als:

send -- "chkdsk :c\r\n"
expect "tekst van de vraag die het commando chkdsk teruggeeft"
send "Yes\r\n"

Offline jmbouma

  • Lid
Re: Antwoord doorgeven
« Reactie #15 Gepost op: 2011/04/01, 16:58:49 »
Thx, ga ermee aan de gang.

Greetz.

Offline jmbouma

  • Lid
Re: Antwoord doorgeven
« Reactie #16 Gepost op: 2011/04/03, 13:15:52 »
Helaas, het lukt me niet.
Ik heb:
$ cat tt.sh
send -- "chkdsk c: /r\r"
expect -exact "zodra de computer de volgende keer wordt opgestart? (J/N) "
send -- "J\r"
expect -exact "\r
\r
Dit volume wordt gecontroleerd zodra de computer de volgende keer*\r
\r"

Na expect tt.sh krijg ik:
$ expect tt.sh
Jhkdsk c: /r

Het lijkt erop dat de J wordt doorgegeven, echter na herstart.....geen chkdsk.

Ik ben ff leeg en heb geen opties meer....

Greetz.