https://foro.gambas-es.org/viewtopic.php?f=1&t=2147
-----------------------------------
Elena
Viernes, 27 Enero 2012, 19:02

Ejecutar Comandos Shell Desde Gambas Como Administrador
-----------------------------------
Hola a todos.

Estoy empezando a programar gracias a vosotros.

De momento utilizo programas externos con shell y exec. Estoy aprendiendo aprogramar con el foro, no tenia ni idea hace dos meses.
Me parece un potencial increible el poder utilizar la shell de linux desde gambas.

El primer inconveniente que tengo es que algunos progrmas me piden la contraseña de root y no se como ponerla desde gambas.

Tambien me gustaria saber como puedo colocarme en otro directorio que no sea el home,
pues los comandos que utilizo con el exec o shell desde gambas me utilizan por defecto el directorio home.

por ejemplo:

shell "gksudo nautilus" 
al ejecutarlo me pide la contraseña, y yo quiero que el programa la ponga automaticamente.

Se me ocurrio hacer un capturador de pantalla, y descubri el scrot pero necesito estar en la ruta donde quiero guardar la imagen si no
me la guarda en el home.

el comando que utilizo es el siguienhte: Shell "scrot imagen.jpg", esto me genera el archivo de la pantalla pero en el directorio home,
yo quiero que el usuario pueda guardar la imagen generada donde quiera.

scrot es un programa que instale, no viene por defecto en ubuntu. 
E leido la documentacion de scrot y no me deja especificar la ruta en la linea de comando.

como puedo hacerlo?

Gracias por todo. 
Felicitaciones por el foro tan increible que teneis.


-----------------------------------
jsbsan
Viernes, 27 Enero 2012, 19:33

Re: Ejecutar Comandos Shell Desde Gambas Como Administrador
-----------------------------------
Hola, bienvenida Elena

[quote]El primer inconveniente que tengo es que algunos programas me piden la contraseña de root y no se como ponerla desde gambas. [/quote]

Esto se hace poniendo:
[b]echo contasena | sudo -S comando[/b]

Te dejo este código, que te pregunta la contraseña y ejecuta nautilus como root (si le das la contraseña correcta, claro)

[code linenumbers=false syntax=gambas]  dim contrasena as string
  Dim sUsuario As String
  Dim TU_USUARIO As String  
  contrasena = InputBox("Introduce contraseña del ROOT:")
  Shell ("whoami") To TU_USUARIO
  TU_USUARIO = Replace(TU_USUARIO, "\n", "")
  'Voy a entrar como ROOT, y compruebo si estoy como ROOT
  Shell ("echo " & contrasena & " | sudo -S whoami") To sUsuario
  If sUsuario <> "root\n" Then  
    'el usuario no es root no puedo hacer nada como superusuario ROOT
    Message.Info("No es la contraseña del root (" & sUsuario & ")")
    Return "error en root"
  Else
    comando = "echo " & var.contrasena & "|sudo -S nautilus" 'Ejecuta nautilus como root
    Shell comando Wait
  endif[/code]


[quote]yo quiero que el usuario pueda guardar la imagen generada donde quiera. [/quote]

A ver si te vale este codigo (he separado las instrucciones del comando con punto y coma ";"
[code linenumbers=false syntax=gambas]directorioQueQuiereUsuario="/home/elena/imagenes/"
comando="cd " & directorioQueQuiereUsuario & " ; scrot imagen.png"
shell comando[/code]


-----------------------------------
jguardon
Viernes, 27 Enero 2012, 21:53

Re: Ejecutar Comandos Shell Desde Gambas Como Administrador
-----------------------------------
[quote user="Elena" post="12366"]
scrot es un programa que instale, no viene por defecto en ubuntu. 
He leido la documentacion de scrot y no me deja especificar la ruta en la linea de comando.
[/quote]

Hola

Pues has leído poco...  :mryellow: 

En esta página se resume el manual de scrot y se explica cómo mover la imagen capturada a otra ubicación en un solo comando:

http://www.itnewb.com/tutorial/Using-Scrot-the-Screen-Shot-Command-Line-Utility-for-Linux

Está en inglés pero es muy sencillo. Mira la sección "Additional Operations" y la siguiente.

Básicamente emplea un switch para pasar el argumento con la ruta donde mover la captura, todo ello en bash.


[quote][b]Additional Operations[/b]

You can also have another command or program run against the saved screen shot image scrot creates by using the -e switch. For example, the following command will move the saved image to another folder.

    [code linenumbers=false syntax=bash]scrot operation.png -e 'mv $f /home/kurt/Desktop/'[/code]

[b]Special Strings[/b]

    $f image path/filename (ignored when used in the filename)
    $n image name (ignored when used in the filename)
    $s image size (bytes) (ignored when used in the filename)
    $p image pixel size
    $w image width
    $h image height
    $t image format
    $$ prints a literal '$'

[/quote]


Saludos


-----------------------------------
gara_pm
Martes, 31 Enero 2012, 23:10

Re: Ejecutar Comandos Shell Desde Gambas Como Administrador
-----------------------------------
Hola Elena,
                     Si quieres sacar un screenshot a tu pantalla a base de comando prueba con import, ademas de viene por defecto en linux. Te dejo un ejemplo :

[code linenumbers=false syntax=bash]
     import -pause 3 print_win.png # le indico que en 3 segundo me saque una foto del escritorio
[/code]

Espero que te ayude.


-----------------------------------
Agamenon
Jueves, 02 Febrero 2012, 20:29

Re: Ejecutar Comandos Shell Desde Gambas Como Administrador
-----------------------------------
justo estaba buscando esto, pero mi cuestion es que tengo:

En terminal: [b]iwconfig[/b]

ejemplo y quiero ver la terminal, hay alguna forma de verlo?


-----------------------------------
Agamenon
Jueves, 02 Febrero 2012, 23:44

Re: Ejecutar Comandos Shell Desde Gambas Como Administrador
-----------------------------------
[quote user="Agamenon" post="12424"]justo estaba buscando esto, pero mi cuestion es que tengo:

En terminal: [b]iwconfig[/b]

ejemplo y quiero ver la terminal, hay alguna forma de verlo?[/quote]

q nabo, recién encontré un post, con xterm. bueno y si le pedis en el lanzador que el usuario se auto incie como root:

[color=#190000]gksudo /usr/bin/programa.gambas[/color]

habria que editar algun archivo donde le dice al gambas que genere en lanzador como /usr/bin/programa.gambas. o tambien yo uso para lanzar script y que no se cierre:

sh -c "cd /usr/bin/ ;./programa.gambas ;sudo -s"

eso en terminal.


-----------------------------------
Agamenon
Viernes, 03 Febrero 2012, 03:30

Re: Ejecutar Comandos Shell Desde Gambas Como Administrador
-----------------------------------
una duda, yo uso xterm, osea

EXEC ["xterm", "-hold", "-e", "comandos"]

esto me abre el terminal pero la idea es parar ese terminal (Ctrl+c), y copiar info del terminal para llenar un textbox en el form, pero de esta forma, hay que cerrar el terminal para poder pegar la información en el textbox, hay alguna forma que este quede abierto y pueda copiar las cosas y moverlas al textbox sin cerrarlo?


