Discussion:
Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes
(demasiado antiguo para responder)
Camaleón
2020-05-03 20:20:02 UTC
Permalink
Hola,

Estoy buscando la forma abrir una terminal, ejecutar una orden como root
y mantener el intérprete de comandos.

1. Si ejecuto:

xfce4-terminal -x su - - bash -c "apt-get update && apt-get upgrade; bash"

Al finalizar las órdenes me retorna:

bash: no se puede establecer el grupo de proceso de terminal (18823):
Función ioctl no apropiada para el dispositivo
bash: no hay control de trabajos en este shell

2. Si ejecuto:

xfce4-terminal -H -x su - -c "apt-get update && apt-get upgrade"

Al finalizar las órdenes no me permite introducir más instrucciones,
sólo puedo cerrar la termina.

¿Cómo podría ejecutar las órdenes y mantener el intérprete?

Saludos,
--
Camaleón
Miguel Ángel Sánchez
2020-05-03 20:30:01 UTC
Permalink
Hola, prueba a ejecutar el siguiente comando

xcfe4-terminal -e "bash -c 'apt update && apt upgrade; bash' "

De esta forma al lanzar el emulador de terminal bash ejecuta primero los
comandos de apt y luego lanza una línea de comandos de bash.

Lo he probado con gnome-terminal que es lo que tengo y funciona. Ten en
cuenta que si lo ejecutas como root también tendrás bash como root.
Post by Camaleón
Hola,
Estoy buscando la forma abrir una terminal, ejecutar una orden como root
y mantener el intérprete de comandos.
xfce4-terminal -x su - - bash -c "apt-get update && apt-get upgrade; bash"
Función ioctl no apropiada para el dispositivo
bash: no hay control de trabajos en este shell
xfce4-terminal -H -x su - -c "apt-get update && apt-get upgrade"
Al finalizar las órdenes no me permite introducir más instrucciones,
sólo puedo cerrar la termina.
¿Cómo podría ejecutar las órdenes y mantener el intérprete?
Saludos,
--
Camaleón
Javier Barroso
2020-05-03 21:30:01 UTC
Permalink
Buenas, respondo debajo
Post by Miguel Ángel Sánchez
Hola, prueba a ejecutar el siguiente comando
xcfe4-terminal -e "bash -c 'apt update && apt upgrade; bash' "
De esta forma al lanzar el emulador de terminal bash ejecuta primero los comandos de apt y luego lanza una línea de comandos de bash.
Lo he probado con gnome-terminal que es lo que tengo y funciona. Ten en cuenta que si lo ejecutas como root también tendrás bash como root.
Para root, usa sudo
xfce4-terminal -e "sudo bash -c 'apt-get update; sudo bash'"

Saludos!
Post by Miguel Ángel Sánchez
Post by Camaleón
Hola,
Estoy buscando la forma abrir una terminal, ejecutar una orden como root
y mantener el intérprete de comandos.
xfce4-terminal -x su - - bash -c "apt-get update && apt-get upgrade; bash"
Función ioctl no apropiada para el dispositivo
bash: no hay control de trabajos en este shell
xfce4-terminal -H -x su - -c "apt-get update && apt-get upgrade"
Al finalizar las órdenes no me permite introducir más instrucciones,
sólo puedo cerrar la termina.
¿Cómo podría ejecutar las órdenes y mantener el intérprete?
Saludos,
--
Camaleón
Camaleón
2020-05-04 06:20:02 UTC
Permalink
Post by Javier Barroso
Buenas, respondo debajo
Hola Javier,
Post by Javier Barroso
Post by Miguel Ángel Sánchez
Hola, prueba a ejecutar el siguiente comando
xcfe4-terminal -e "bash -c 'apt update && apt upgrade; bash' "
De esta forma al lanzar el emulador de terminal bash ejecuta primero los comandos de apt y luego lanza una línea de comandos de bash.
Lo he probado con gnome-terminal que es lo que tengo y funciona. Ten en cuenta que si lo ejecutas como root también tendrás bash como root.
Para root, usa sudo
xfce4-terminal -e "sudo bash -c 'apt-get update; sudo bash'"
En este caso, el sistema no tiene sudo. Nunca lo instalo :-)

***@stt008:~$ which sudo
***@stt008:~$

Si se os ocurre alguna otra cosa, soy toda orejas.

Saludos,
--
Camaleón
Esteban Torres
2020-05-04 06:50:02 UTC
Permalink
Post by Camaleón
Post by Javier Barroso
Buenas, respondo debajo
Hola Javier,
Post by Javier Barroso
Post by Miguel Ángel Sánchez
Hola, prueba a ejecutar el siguiente comando
xcfe4-terminal -e "bash -c 'apt update && apt upgrade; bash' "
De esta forma al lanzar el emulador de terminal bash ejecuta primero los comandos de apt y luego lanza una línea de comandos de bash.
Lo he probado con gnome-terminal que es lo que tengo y funciona. Ten en cuenta que si lo ejecutas como root también tendrás bash como root.
Para root, usa sudo
xfce4-terminal -e "sudo bash -c 'apt-get update; sudo bash'"
En este caso, el sistema no tiene sudo. Nunca lo instalo :-)
Si se os ocurre alguna otra cosa, soy toda orejas.
Saludos,
Has pensado en ssh?

ssh ***@127.0.0.1 .........
Camaleón
2020-05-04 08:20:02 UTC
Permalink
Post by Esteban Torres
Post by Camaleón
Post by Javier Barroso
Buenas, respondo debajo
Hola Javier,
Post by Javier Barroso
Post by Miguel Ángel Sánchez
Hola, prueba a ejecutar el siguiente comando
xcfe4-terminal -e "bash -c 'apt update && apt upgrade; bash' "
De esta forma al lanzar el emulador de terminal bash ejecuta primero los comandos de apt y luego lanza una línea de comandos de bash.
Lo he probado con gnome-terminal que es lo que tengo y funciona. Ten en cuenta que si lo ejecutas como root también tendrás bash como root.
Para root, usa sudo
xfce4-terminal -e "sudo bash -c 'apt-get update; sudo bash'"
En este caso, el sistema no tiene sudo. Nunca lo instalo :-)
Si se os ocurre alguna otra cosa, soy toda orejas.
Has pensado en ssh?
Buena idea, porque tengo ssh y configurado ex profeso para actualizar
Firefox (solo root lo puede actualizar).

***@stt008:~$ xfce4-terminal -x ssh ***@localhost "apt-get update && apt-get upgrade"
***@stt008:~$

Ejecuta todo bien, pero al finalizar cierra la terminal.

Si tiro de bash, ejecuta todo bien pero al finalizar no me retorna a la
shell, el cursor queda en blanco:

***@stt008:~$ xfce4-terminal -x ssh ***@localhost 'bash -c "apt-get update && apt-get upgrade"; exec bash'

¿Qué me faltaría?

Saludos,
--
Camaleón
Miguel Ángel Sánchez
2020-05-04 08:40:03 UTC
Permalink
Prueba con esto,

xfce4-terminal -x ssh ***@localhost 'bash -c "apt-get update && apt-get
upgrade; bash" '

Y que sea bash el que lance la línea de comandos.
Post by Esteban Torres
Post by Camaleón
Post by Javier Barroso
Buenas, respondo debajo
Hola Javier,
Post by Javier Barroso
On Sun, May 3, 2020 at 10:29 PM Miguel Ángel Sánchez <
Post by Miguel Ángel Sánchez
Hola, prueba a ejecutar el siguiente comando
xcfe4-terminal -e "bash -c 'apt update && apt upgrade; bash' "
De esta forma al lanzar el emulador de terminal bash ejecuta
primero los comandos de apt y luego lanza una línea de comandos de bash.
Post by Esteban Torres
Post by Camaleón
Post by Javier Barroso
Post by Miguel Ángel Sánchez
Lo he probado con gnome-terminal que es lo que tengo y funciona.
Ten en cuenta que si lo ejecutas como root también tendrás bash como root.
Post by Esteban Torres
Post by Camaleón
Post by Javier Barroso
Para root, usa sudo
xfce4-terminal -e "sudo bash -c 'apt-get update; sudo bash'"
En este caso, el sistema no tiene sudo. Nunca lo instalo :-)
Si se os ocurre alguna otra cosa, soy toda orejas.
Has pensado en ssh?
Buena idea, porque tengo ssh y configurado ex profeso para actualizar
Firefox (solo root lo puede actualizar).
Ejecuta todo bien, pero al finalizar cierra la terminal.
Si tiro de bash, ejecuta todo bien pero al finalizar no me retorna a la
update && apt-get upgrade"; exec bash'
¿Qué me faltaría?
Saludos,
--
Camaleón
Camaleón
2020-05-04 08:50:02 UTC
Permalink
(...)
Post by Miguel Ángel Sánchez
Post by Camaleón
Post by Esteban Torres
Post by Camaleón
Si se os ocurre alguna otra cosa, soy toda orejas.
Has pensado en ssh?
Buena idea, porque tengo ssh y configurado ex profeso para actualizar
Firefox (solo root lo puede actualizar).
Ejecuta todo bien, pero al finalizar cierra la terminal.
Si tiro de bash, ejecuta todo bien pero al finalizar no me retorna a la
^^^^^^^
Post by Miguel Ángel Sánchez
Post by Camaleón
¿Qué me faltaría?
Prueba con esto,
upgrade; bash" '
Y que sea bash el que lance la línea de comandos.
Ya lo he probado (ver más arriba ^^^^), se queda en blanco.

Saludos,
--
Camaleón
Miguel Ángel Sánchez
2020-05-04 09:00:02 UTC
Permalink
De acuerdo, no lo leí bien, usé las comillas al revés jajaj

Esta web
https://stackoverflow.com/questions/28360288/ssh-remotely-run-a-script-and-stay-there/28360598#comment45064288_28360598
sugiere que añadas la opción -t al comando de ssh. Lo he probado con un
servidor local y me funciona.

xfce4-terminal -x ssh -t ***@localhost 'bash -c "apt-get update && apt-get
upgrade"; bash'
Post by Camaleón
(...)
Post by Miguel Ángel Sánchez
Post by Camaleón
Post by Esteban Torres
Post by Camaleón
Si se os ocurre alguna otra cosa, soy toda orejas.
Has pensado en ssh?
Buena idea, porque tengo ssh y configurado ex profeso para actualizar
Firefox (solo root lo puede actualizar).
apt-get upgrade"
Ejecuta todo bien, pero al finalizar cierra la terminal.
Si tiro de bash, ejecuta todo bien pero al finalizar no me retorna a la
update && apt-get upgrade"; exec bash'
^^^^^^^
Post by Miguel Ángel Sánchez
Post by Camaleón
¿Qué me faltaría?
Prueba con esto,
upgrade; bash" '
Y que sea bash el que lance la línea de comandos.
Ya lo he probado (ver más arriba ^^^^), se queda en blanco.
Saludos,
--
Camaleón
Camaleón
2020-05-04 09:30:02 UTC
Permalink
Post by Camaleón
(...)
Post by Miguel Ángel Sánchez
Post by Camaleón
Post by Esteban Torres
Post by Camaleón
Si se os ocurre alguna otra cosa, soy toda orejas.
Has pensado en ssh?
Buena idea, porque tengo ssh y configurado ex profeso para actualizar
Firefox (solo root lo puede actualizar).
(...)
Post by Camaleón
Post by Miguel Ángel Sánchez
Post by Camaleón
Si tiro de bash, ejecuta todo bien pero al finalizar no me retorna a la
update && apt-get upgrade"; exec bash'
^^^^^^^
Post by Miguel Ángel Sánchez
Post by Camaleón
¿Qué me faltaría?
Prueba con esto,
upgrade; bash" '
Y que sea bash el que lance la línea de comandos.
Ya lo he probado (ver más arriba ^^^^), se queda en blanco.
De acuerdo, no lo leí bien, usé las comillas al revés jajaj
Esta web
https://stackoverflow.com/questions/28360288/ssh-remotely-run-a-script-and-stay-there/28360598#comment45064288_28360598
sugiere que añadas la opción -t al comando de ssh. Lo he probado con un
servidor local y me funciona.
upgrade"; bash'
¡Funciona! :-)

***@stt008:~$ xfce4-terminal -x ssh -t ***@localhost 'bash -c "apt-get update && apt-get upgrade; bash" '
***@stt008:~$

(se abre una nueva terminal)

***@localhost's password:
Obj:1 http://security.debian.org/debian-security stretch/updates InRelease
Ign:2 http://ftp.de.debian.org/debian stretch InRelease
Obj:3 http://ftp.de.debian.org/debian stretch-updates InRelease
Obj:4 http://ftp.de.debian.org/debian stretch Release
Leyendo lista de paquetes... Hecho
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Calculando la actualización... Hecho
El paquete indicado a continuación se instaló de forma automática y ya no es necesario.
libmicrodns0
Utilice «apt autoremove» para eliminarlo.
0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
***@stt008:~#

Muchas gracias a todos por las ideas, entre una y otra al final lo
habéis bordado.

P.S. Otra opción que estaba mirando, y funciona pero requiere trabajo
extra, consiste en lanzar una terminal de root (pkexec xfce4-terminal -x
"órdenes") pero hay que crear antes una política de permiso para la
terminal que quieras habilitar, en fin, un engorro. Sacado de aquí¹

¹ https://forum.xfce.org/viewtopic.php?id=13749

Saludos,
--
Camaleón
Camaleón
2020-05-04 06:10:01 UTC
Permalink
El 2020-05-03 a las 22:28 +0200, Miguel Ángel Sánchez escribió:

Hola Miguel Ángel,

(corrijo el top-posting)
(...)
Post by Miguel Ángel Sánchez
Post by Camaleón
xfce4-terminal -x su - - bash -c "apt-get update && apt-get upgrade; bash"
Función ioctl no apropiada para el dispositivo
bash: no hay control de trabajos en este shell
xfce4-terminal -H -x su - -c "apt-get update && apt-get upgrade"
Al finalizar las órdenes no me permite introducir más instrucciones,
sólo puedo cerrar la termina.
¿Cómo podría ejecutar las órdenes y mantener el intérprete?
Hola, prueba a ejecutar el siguiente comando
xcfe4-terminal -e "bash -c 'apt update && apt upgrade; bash' "
De esta forma al lanzar el emulador de terminal bash ejecuta primero los
comandos de apt y luego lanza una línea de comandos de bash.
Lo he probado con gnome-terminal que es lo que tengo y funciona. Ten en
cuenta que si lo ejecutas como root también tendrás bash como root.
La idea es que antes de ejecutar las órdenes me pida las credenciales
de root porque la instrucción «apt-get upgrade» lo necesita.

Si ejecuto lo que me indicas (lo he probado invocando a xfce4-terminal
y también con xterm), la segunda instrucción falla:

***@stt008:~$ xfce4-terminal -e "bash -c 'apt update && apt upgrade; bash' "
Leyendo lista de paquetes... Hecho
W: chmod 0700 of directory /var/lib/apt/lists/partial failed - SetupAPTPartialDirectory (1: Operación no permitida)
E: No se pudo abrir el fichero de bloqueo «/var/lib/apt/lists/lock» - open (13: Permiso denegado)
E: No se pudo bloquear el directorio /var/lib/apt/lists/
W: Se produjo un problema al desligar el fichero /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permiso denegado)
W: Se produjo un problema al desligar el fichero /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permiso denegado)
***@stt008:~$

Saludos,
--
Camaleón
Miguel Ángel Sánchez
2020-05-03 20:40:01 UTC
Permalink
Hola, prueba a ejecutar el siguiente comando

xcfe4-terminal -e "bash -c 'apt update && apt upgrade; bash' "

De esta forma al lanzar el emulador de terminal bash ejecuta primero los
comandos de apt y luego lanza una línea de comandos de bash.

Lo he probado con gnome-terminal que es lo que tengo y funciona. Ten en
cuenta que si lo ejecutas como root también tendrás bash como root.

PD: disculpas si llega el mensaje duplicado, no me aclaro bien con mi
cliente de correo.
Loading...