Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

Camaleón
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

Reply | Threaded
Open this post in threaded view
|

Re: Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

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.

El dom., 3 may. 2020 22:17, Camaleón <[hidden email]> escribió:
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

Reply | Threaded
Open this post in threaded view
|

Re: Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

Miguel Ángel Sánchez
In reply to this post by Camaleón
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.
Reply | Threaded
Open this post in threaded view
|

Re: Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

Javier Barroso-3
In reply to this post by Miguel Ángel Sánchez
Buenas, respondo debajo

On Sun, May 3, 2020 at 10:29 PM Miguel Ángel Sánchez <[hidden email]> wrote:
>
> 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!

EMAIL ORIGINAL:

>
> El dom., 3 may. 2020 22:17, Camaleón <[hidden email]> escribió:
>>
>> 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
>>

Reply | Threaded
Open this post in threaded view
|

Re: Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

Camaleón
In reply to this post by Miguel Ángel Sánchez
El 2020-05-03 a las 22:28 +0200, Miguel Ángel Sánchez escribió:

Hola Miguel Ángel,

(corrijo el top-posting)

> El dom., 3 may. 2020 22:17, Camaleón <[hidden email]> escribió:

(...)

> > 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?

> 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:

sm01@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)
sm01@stt008:~$

Saludos,

--
Camaleón

Reply | Threaded
Open this post in threaded view
|

Re: Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

Camaleón
In reply to this post by Javier Barroso-3
El 2020-05-03 a las 23:21 +0200, Javier Barroso escribió:

> Buenas, respondo debajo

Hola Javier,
 

> On Sun, May 3, 2020 at 10:29 PM Miguel Ángel Sánchez <[hidden email]> wrote:
> >
> > 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 :-)

sm01@stt008:~$ which sudo
sm01@stt008:~$

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

Saludos,

--
Camaleón

Reply | Threaded
Open this post in threaded view
|

Re: Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

Esteban Torres

El 4/5/20 a las 8:14, Camaleón escribió:

> El 2020-05-03 a las 23:21 +0200, Javier Barroso escribió:
>
>> Buenas, respondo debajo
> Hola Javier,
>  
>> On Sun, May 3, 2020 at 10:29 PM Miguel Ángel Sánchez <[hidden email]> wrote:
>>> 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 :-)
>
> sm01@stt008:~$ which sudo
> sm01@stt008:~$
>
> Si se os ocurre alguna otra cosa, soy toda orejas.
>
> Saludos,
>
Has pensado en ssh?

ssh root@127.0.0.1 .........

Reply | Threaded
Open this post in threaded view
|

Re: Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

Camaleón
El 2020-05-04 a las 08:42 +0200, Esteban Torres escribió:

>
> El 4/5/20 a las 8:14, Camaleón escribió:
> > El 2020-05-03 a las 23:21 +0200, Javier Barroso escribió:
> >
> > > Buenas, respondo debajo
> > Hola Javier,
> > > On Sun, May 3, 2020 at 10:29 PM Miguel Ángel Sánchez <[hidden email]> wrote:
> > > > 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 :-)
> >
> > sm01@stt008:~$ which sudo
> > sm01@stt008:~$
> >
> > Si se os ocurre alguna otra cosa, soy toda orejas.
> >
> Has pensado en ssh?
>
> ssh root@127.0.0.1 .........

Buena idea, porque tengo ssh y configurado ex profeso para actualizar
Firefox (solo root lo puede actualizar).

sm01@stt008:~$ xfce4-terminal -x ssh root@localhost "apt-get update && apt-get upgrade"
sm01@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:

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

¿Qué me faltaría?

Saludos,

--
Camaleón

Reply | Threaded
Open this post in threaded view
|

Re: Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

Miguel Ángel Sánchez
Prueba con esto,

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

Y que sea bash el que lance la línea de comandos.

El lun., 4 may. 2020 10:19, Camaleón <[hidden email]> escribió:
El 2020-05-04 a las 08:42 +0200, Esteban Torres escribió:
>
> El 4/5/20 a las 8:14, Camaleón escribió:
> > El 2020-05-03 a las 23:21 +0200, Javier Barroso escribió:
> >
> > > Buenas, respondo debajo
> > Hola Javier,
> > > On Sun, May 3, 2020 at 10:29 PM Miguel Ángel Sánchez <[hidden email]> wrote:
> > > > 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 :-)
> >
> > sm01@stt008:~$ which sudo
> > sm01@stt008:~$
> >
> > Si se os ocurre alguna otra cosa, soy toda orejas.
> >
> Has pensado en ssh?
>
> ssh [hidden email] .........

Buena idea, porque tengo ssh y configurado ex profeso para actualizar
Firefox (solo root lo puede actualizar).

sm01@stt008:~$ xfce4-terminal -x ssh root@localhost "apt-get update && apt-get upgrade"
sm01@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:

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

¿Qué me faltaría?

Saludos,

--
Camaleón

Reply | Threaded
Open this post in threaded view
|

Re: Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

Camaleón
El 2020-05-04 a las 10:31 +0200, Miguel Ángel Sánchez escribió:

> El lun., 4 may. 2020 10:19, Camaleón <[hidden email]> escribió:
>
> > El 2020-05-04 a las 08:42 +0200, Esteban Torres escribió:

(...)

> > > > Si se os ocurre alguna otra cosa, soy toda orejas.
> > > >
> > > Has pensado en ssh?
> > >
> > > ssh root@127.0.0.1 .........
> >
> > Buena idea, porque tengo ssh y configurado ex profeso para actualizar
> > Firefox (solo root lo puede actualizar).
> >
> > sm01@stt008:~$ xfce4-terminal -x ssh root@localhost "apt-get update &&
> > apt-get upgrade"
> > sm01@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:
> >
> > sm01@stt008:~$ xfce4-terminal -x ssh root@localhost 'bash -c "apt-get update && apt-get upgrade"; exec bash'
                                                         ^^^^^^^
> >
> > ¿Qué me faltaría?

> Prueba con esto,
>
> xfce4-terminal -x ssh root@localhost 'bash -c "apt-get update && apt-get
> 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

Reply | Threaded
Open this post in threaded view
|

Re: Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

Miguel Ángel Sánchez
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 root@localhost 'bash -c "apt-get update && apt-get upgrade"; bash'


El lun., 4 may. 2020 10:47, Camaleón <[hidden email]> escribió:
El 2020-05-04 a las 10:31 +0200, Miguel Ángel Sánchez escribió:

> El lun., 4 may. 2020 10:19, Camaleón <[hidden email]> escribió:
>
> > El 2020-05-04 a las 08:42 +0200, Esteban Torres escribió:

(...)

> > > > Si se os ocurre alguna otra cosa, soy toda orejas.
> > > >
> > > Has pensado en ssh?
> > >
> > > ssh [hidden email] .........
> >
> > Buena idea, porque tengo ssh y configurado ex profeso para actualizar
> > Firefox (solo root lo puede actualizar).
> >
> > sm01@stt008:~$ xfce4-terminal -x ssh root@localhost "apt-get update &&
> > apt-get upgrade"
> > sm01@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:
> >
> > sm01@stt008:~$ xfce4-terminal -x ssh root@localhost 'bash -c "apt-get update && apt-get upgrade"; exec bash'
                                                         ^^^^^^^
> >
> > ¿Qué me faltaría?

> Prueba con esto,
>
> xfce4-terminal -x ssh root@localhost 'bash -c "apt-get update && apt-get
> 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

Reply | Threaded
Open this post in threaded view
|

(Solucionado) Re: Ejecutar instrucción como súperusuario y mantener el intéprete de órdenes

Camaleón
El 2020-05-04 a las 10:56 +0200, Miguel Ángel Sánchez escribió:
 

> El lun., 4 may. 2020 10:47, Camaleón <[hidden email]> escribió:
>
> > El 2020-05-04 a las 10:31 +0200, Miguel Ángel Sánchez escribió:
> >
> > > El lun., 4 may. 2020 10:19, Camaleón <[hidden email]> escribió:
> > >
> > > > El 2020-05-04 a las 08:42 +0200, Esteban Torres escribió:
> >
> > (...)
> >
> > > > > > Si se os ocurre alguna otra cosa, soy toda orejas.
> > > > > >
> > > > > Has pensado en ssh?
> > > > >
> > > > > ssh root@127.0.0.1 .........
> > > >
> > > > Buena idea, porque tengo ssh y configurado ex profeso para actualizar
> > > > Firefox (solo root lo puede actualizar).

(...)

> > > > Si tiro de bash, ejecuta todo bien pero al finalizar no me retorna a la
> > > > shell, el cursor queda en blanco:
> > > >
> > > > sm01@stt008:~$ xfce4-terminal -x ssh root@localhost 'bash -c "apt-get
> > update && apt-get upgrade"; exec bash'
> >                                                          ^^^^^^^
> > > >
> > > > ¿Qué me faltaría?
> >
> > > Prueba con esto,
> > >
> > > xfce4-terminal -x ssh root@localhost 'bash -c "apt-get update && apt-get
> > > 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.
>
> xfce4-terminal -x ssh -t root@localhost 'bash -c "apt-get update && apt-get
> upgrade"; bash'

¡Funciona! :-)

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

(se abre una nueva terminal)

root@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.
root@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