eine Usereingabe automatisieren

tuxlover

tuxlover

Der den Tux knuddelt
hallo allerseits,

ich habe mich gerade gefragt, wie man ein porgramm das eine eingabe vom user verlangt, dazu bringen kann eine standarteingabe zu übergeben.

Also mal angenommen, ich habe eine auführbare datei, die mich fragt, ob ich diese wirklich ausführen will. ich muss also jedes mal y eingeben. Nun soll aber als standartantwort immer y übergeben werden.

Wie kann man das möglichst ohne viel aufwand machen?

gruß tuxlover
 
Ein simples shellscript schreiben dem du als erstes Argument den Programmnamen mit Pfad übergibst und als zweites die "Antwort" des Users.

Das shell-script ruft dann das Programm mit dem entsprechenden Parameter(n) auf.

Dürfte (mit Abfangen möglicher Fehler) max. ein 10-Zeiler werden.
 
"man bash" und "yes" sollten Dir helfen.

Gruß, Daniel
 
gehen wir mal davon aus, dass ich schon weiß wie man ein shellscript schreibt und man bash mir auch nichts verrät was ich in diversen howtos schon gelsen habe, könnte es etwa so funktionieren?

Code:
#auto-user.sh
#script that automates standart user input

#! /bin/bash

INPUT=y

./script_that_does_something_and_asks_for_user_input
$INPUT

exit 0
 
Zuletzt bearbeitet:
@tuxlover: Nein, funtioniert so nicht. Es würde das Skript aufrufen und nach Beendigung dessen wird y aufgerufen, was einen Fehler erzeugt, weil y kein Befehl ist. Wenn y die einzige Antwort ist, geht:

Code:
yes | ./skript

Bei anderen Antworten schreib diese in ein File, z.B.

antworten:

Code:
y
y
n

und ruf das Skript mittels:

Code:
./skript < antworten

auf. Dies meinte ich übrigens mit "man bash", da steht alles über pipes und Umleitungen drin.
 
Zuletzt bearbeitet:
*andenkopfhau*

naklar mit ner pipe. warum bin ich daruaf nicht gleich gekommen. jetzt ist alles klar. danke.
 
BTW mal so nebenbei gefragt:
Was ist ein Stanart.
Stehe auf dem rechten Bein, linkem Bein oder auf beidem? ;)

Die zweite Gegenfrage beruht auf meiner Beobachtung, dass hier immer öfter die Shebang:
auftaucht.
Warum das Leerzeichen (Space)da drinnen?
Das produziert in vielen modernen Shells Fehler!
Oder kommt das aus einem (obscured ) OS?

Gruß Wolfgang
 

Das geht natürlich nur bei Skripten/Programmen, die STDIN nicht flushen, bevor sie eine Eingabe erwarten (wie es z.B. Login-Anwendungen typischerweise tun).

In diesem Fall kann die Eingabe mit Expect gehandelt werden.

Greetz, Doc
 
Das geht natürlich nur bei Skripten/Programmen, die STDIN nicht flushen, bevor sie eine Eingabe erwarten (wie es z.B. Login-Anwendungen typischerweise tun).

In diesem Fall kann die Eingabe mit Expect gehandelt werden.

Greetz, Doc

Natürlich, Du hast Recht. Den Fall hab ich erstmal garnicht betrachtet. Das wäre dann zur Sprache gekommen, wenn eine Antwort in der Art "Es geht nicht!" gekommen wäre. ;)
 
Zuletzt bearbeitet:
@Xanti

... war ja auch nur als Ergänzung gedacht. Natürlich funktioniert Dein Ansatz in den meisten Fällenund es gilt ja auch: "keep it as simple as possible"

;o)

Greetz, Doc
 
@wolfgang danke für den hinweis. habe s wirklich nicht bemerkt. gehen wir mal weiter davon aus, dass ich das alles erst so nach und nach lerne und ich dem zufolge auch nur das wissen kann, was ichg bis dahin gelernt habe. und im advanced bash scripting guide (abs) war der Shebang eben auch so und nicht anders dargestellt.

die viel interessantere frage ist doch, warum sollte das fehler produzieren und
wie äußern sich diese.
 
die viel interessantere frage ist doch, warum sollte das fehler produzieren und
wie äußern sich diese.

Ganz einfach: Weil manche Shells das halt eben ohne Leerzeichen erwarten.

Du wirst dann sowas kriegen wie "bad interpreter" oder Ähnliches....
 
Ganz einfach: Weil manche Shells das halt eben ohne Leerzeichen erwarten.

Du wirst dann sowas kriegen wie "bad interpreter" oder Ähnliches....

ja aber ich nutze ja die bash und mittlerweile kann man behaupten das die bash wohl standard bei linux-distributionen ist. außerdem interessiert mich das herzlich wenig, da die scripte ja sowieso nur bei mir laufen sollen. zudem wirkt es etwas übersichtlicher.
 
Zuletzt bearbeitet:
außerdem interessiert mich das herzlich wenig, da die scripte ja sowieso nur bei mir laufen sollen. zudem wirkt es etwas übersichtlicher.

WTF?

Ja, dann frag halt nicht, wenn es dich nicht interessiert.
 
Wenn man keinen Wert auf Portabilität legt, kann man die Shebang auch weglassen, der "Übersichtlichkeit" wegen. :think:
 
@supersucker ok das war vlt. ein wenig unschön formuliert, es interessiert mich schon, welche fehler es versuchen kann, da es bei mir aber keine fehler verursacht, interessiert mich das nicht, ob ich es so oder so programmiere. sorry :)
 
Du sagst selbst, dass du noch lernen willst.
Warum also nicht gleich so lernen, dass es überall anwendbar ist?

SysV conform ist das Leerzeichen jedenfalls nicht.


Gruß Wolfgang
 
@wolfgang stimmt hast recht. vielleicht sollte ich nicht so sturköpfig sein :)
zumal ich vor habe mein lpi zu machen.
 

Ähnliche Themen

Verzeichnis mit 1200 Dateien auf Verweise in Textdateien checken

Script zu bearbeiten einer conf Datei

Befehl beim Session beenden

Queue für copy Script

CentOS - Samba Einrichtung will einfach nicht funktionieren

Zurück
Oben