Demande d'information en bash

Bonsoir,

je souhaite développer un script bash mais je coince vu que je ne trouve pas la bonne info… je recherche mal peut-être aussi…

Peux t’on forcer à écrire un texte et à forcer l’utilisation d’une touche du clavier ?

Je m’explique…

Je souhaitais développer un script bash pour que mes utilisateurs n’est plus qu’à faire ./install.sh

Il s’agit de steam le problème…

donc :

[code]#!/bin/sh

fonctioninstallcss(){
wget http://www.steampowered.com/download/hldsupdatetool.bin
chmod -cvR a+x hldsupdatetool.bin
./hldsupdatetool.bin
rm -rf ~/.steam && ./steam
./steam -command update -game “Counter-Strike Source” -dir .
./steam -command update -game “Counter-Strike Source” -dir . -verify_all
}
[/code]

Problème rencontré lors de l’exécution de ./hldsupdatetool.bin

La licence de steam se déroule et il nous demande d’écrire Yes pour les accepter et ensuite d’appuyer sur Entrée…

Est t’il possible de rendre cela automatique ?

ou chercher ?

Cordialement

Pas sûr, si le programme est bien fait, il doit interroger directement le clavier et non l’entrée standard (à la façon de gpg pour les passphrases par exemple). Dans ce cas, il faut corriger cela en amont, cela est faisable mais pas de façon standard (je ne crois pas que bash dispose d’une telle possibilité). Par ailleurs, faisant cela, tu violes la diffusion des binaires de steam: steam accorde la licence d’utilisation du logiciel après accord explicite de leur licence, faire un script automatique conduit à créer des utilisateurs qui ne l’ont pas acceptés explicitement. En toute rigueur, tu ne peux pas.

merci de l’information fran.b

En C (et je crois bien que c’est le seul avec C++) tu peut simuler l’appuie sur une touche grâce aux terminaux virtuels, ce n’est pas très simple. Mais ça permet d’automatiser à peut près n’importe quoi (y compris gpg/ssh par exemple).

Après la partie légale ça je n’y connais rien, je ne connais pas le CLUF de steam.

Pour être précis, il te suffit de faire un strace de l’éxécution du programme, tu verras quelle est la fonction appelée lors de la lecture du mot Yes. Il te suffit alors de surcharger cette fonction avec une librairie ad hoc en cherchant le caractère sur l’entrée standard par exemple. C’est proche des techniques de craquage :slightly_smiling:

Bon, ben écoute j’ai fait ce que j’ai dit juste avant et surprise:

[quote][…]fstat64(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), …}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f6d000
write(1, “Enter ‘yes’ to accept this agree”…, 55) = 55
read(0, “no\n”, 1024) = 3
exit_group(0) = ?
Process 5187 detached
[/quote]

L’entrée se fait sur le stdin :open_mouth: (étonnant mais bon). Donc un bête

marche (je l’ai testé).

waouh merci à vous enfin surtout à fran.b :wink: