[Gambas-user] Interaction With Command Shell

Tobias Boege taboege at ...626...
Tue Mar 17 01:42:37 CET 2015


On Tue, 17 Mar 2015, Beno?t Minisini wrote:
> >> I'm automating scp and ssh daily with Gambas, by detecting when the
> >> password prompt appears (and the ssh key confirmation question too).
> >>
> >> It cannot be 100% reliable, because any other program can print
> >> "password:" on its standard output, and apparently there is no way to
> >> know that a program is waiting for input.
> >>
> >> But in practise it works.
> >>
> >> If there is no clean way to do that, maybe I should make a component
> >> with that, even it's some quick & dirty hack?
> >>
> >
> > I would definitely like to see it. I have a project here which can pipe a
> > password into sudo and I remember seeing forum threads where others could
> > automate sshfs mounts but all those approaches didn't work with my sshfs.
> > (That's why I suspected that they put extra effort into preventing auto-
> >   mation, be it for their amusement or to discipline users.)
> >
> > Regards,
> > Tobi
> >
> 
> The idea would be the ability to define the concept of "command that 
> sometimes asks for a password or something else", which would be linked 
> with a list of command executable names, a prompt, and what to answer.
> 

Oh, no, I meant I'd like to see the code you use to feed scp a password,
in a plain project, just to see if it works here, too, and if I can adapt
it to sshfs. Because it's weird that I give a password to sudo but not to
sshfs.

> As, "of course", each command do as it wants, and often commands run 
> other commands that could prompt too (for example, svn uses the ssh 
> protocol, but cannot give it any password, and ask for it several times).
> 
> And, "of course", each command must be run in english, as we will not 
> store the different prompts for all possible languages.
> 
> I know the prompts of ssh, scp, and svn (but maybe not all). For other 
> commands, I need the knowledge of the Gambas community!
> 
> If you have other ideas about that, just tell.
> 

Two things:

 - some programs, like sudo, allow to define a prompt. The code could take
   advantage of that if we teach it which programs allow that and how,
 - prompts may also depend on the software version, distribution or
   configuration (I remember there was a program which had a different
   prompt at school than it had at my home computer, might have also been
   sudo).

The class you described in your first paragraph would have essentially no
more data than

  Private $aPrograms As String[] ' Program executable paths
  Private $sPrompt As String ' Prompt (String vs. Like pattern vs. gb.pcre?)
  Private $sAnswer As String ' Answer
  ' or arrays of the latter two.

We never want to save $sAnswer to disk. But the first two depend only on the
machine (on non-sophisticated systems where each user has its own local
version of a program), so they could be saved in a database by the component
requiring only to give the answer each time the Gambas process starts anew.

Regards,
Tobi

-- 
"There's an old saying: Don't change anything... ever!" -- Mr. Monk




More information about the User mailing list