Re: Unir Varios Comandos Terminal Desde Gambas
Hola atonidas
Primero de todo, deberías aprender lo que es una variable. En el caso que nos ocupa, "miclave_de_root" evidentemente es el nombre de una variable que contiene la clave de root que previamente habrías asignado a dicha variable. Podría haberse llamado de cualquier otro modo, pero si aún no entiendes lo más básico y fundamental de la programación, te recomendaría la lectura del libro de
gambas que está disponible en nuestra sección de descargas.
Está claro que un comando al que le precede "sudo" te va a pedir la contraseña de root para poder ejecutarse, así que en bash esa es la forma de pasar la contraseña sin tener que teclearla en ese mismo momento. Evidentemente almacenar la contraseña implica bastante riesgo de seguridad, pero eso ya cada uno tendrá que lidiar con una solución aceptable, como borrar el contenido de la variable justo después de usarla.
La forma de pedir la contraseña antes de poder ejecutar los comandos puede ser mediante un InputBox o mediante un diálogo específico que tú hagas con un formulario modal y un texbox para contraseñas. En el shell de Bash (o de Dash), la forma de pasar la contraseña en la misma orden es usando un
pipe con echo contraseña '|' y a continuación la orden a ejecutar. Se pueden concatenar varias órdenes seguidas mediante el operador &&. Así que, creo que el siguiente código podría servir para lo que necesitas, pero recuerda que debes profundizar más en el lenguaje estudiando un poco el libro y los ejemplos.
Public Sub Button1_Click()
'el código que vaya aquí se ejecutará
'el pulsar el botón
Dim contrasena As String
contrasena = InputBox("Introduce la contraseña de administrador", "Permiso Requerido")
If contrasena Then
Shell "echo " & contrasena & " | sudo -S add-apt-repository ppa:gnome3-team/gnome3-next -y "
"&& sudo -S add-apt-repository ppa:gnome3-team/gnome3-staging -y "
"&& sudo -S apt-get update -y "
"&& sudo -S apt-get install gnome-shell gnome-shell-extensions -y"
Endif
End
Por supuesto, esta no es la única forma de hacerlo. En tu sistema seguramente tendrás disponible el comando "gksudo" o "kdesudo", que es como sudo pero de forma gráfica. Sustituyendo sudo por uno de los dos citados, y prescindiendo de la parte "echo ... contraseña" es una forma bastante segura de hacerlo, pero ya depende de lo que el usuario final tenga instalado en su distribución.
Por cierto, bienvenido a la Comunidad, esperamos que aprendas y disfrutes aquí de este potente lenguaje.
Saludos