GNU/Linux >> Tutoriales Linux >  >> Linux

¿Ejecutando un archivo de script sobre Ssh a través de Sudo?

Puedo iniciar sesión en una máquina remota como un usuario que puede hacer sudo su - . No puedo iniciar sesión como root.

Tengo un script localmente que quiero ejecutar en la máquina remota. Además, el script se envía allí a través de otro script.

No puedo entender cómo. He publicado bastantes preguntas y respuestas aquí, pero no he tenido éxito. Lo más cercano que tengo:

COMMAND_SSH="sudo -i <<'EOF'"`cat ./unifyServiceNode.sh`"\nEOF\n" ;;
...
while read HOST; do
  echo -e "nn======== [email protected]$HOST <-- $COMMAND_SSH =================nn";
  ssh -n -tt [email protected]$HOST "'$COMMAND_SSH'";
done < hosts.txt

Esto termina con esta salida:

======== [email protected] <-- sudo -i <<'EOF'
##
##  Creates a few links and scripts to unify the nodes maintainance.
##

  BB="/bb"
  NAME="bpds-api"
  NAME2="bpds-"

  mkdir -p $BB
  ln -s /opt/$NAME/logs/*.log $BB/log
  ln -s /opt/$NAME/conf/api/$NAME.yml $BB/conf.yml || ln -s /opt/$NAME/conf/api/$NAME2.yml $BB/conf.yml
  echo "systemctl ${1:-restart} "${@:2}" $NAME" > $BB/Sys
  echo "tail -${1:-500f} $BB/log" > $BB/Tail
  echo "nano $BB/conf.yml" > $BB/Conf
  chmod a+x $BB/Sys $BB/Tail $BB/Conf
  echo "export PATH=$PATH:$BB" >> ~/.bashrc
EOF
 =====================================


bash: sudo -i <<EOF': command not found
bash: line 14: /bb/Sys: Permission denied
bash: line 15: /bb/Tail: Permission denied
bash: line 16: /bb/Conf: Permission denied
chmod: changing permissions of ‘/bb/Sys’: Operation not permitted
chmod: changing permissions of ‘/bb/Tail’: Operation not permitted
chmod: changing permissions of ‘/bb/Conf’: Operation not permitted
bash: -c: line 18: unexpected EOF while looking for matching `''
bash: -c: line 19: syntax error: unexpected end of file
Connection to somehost.com closed.

Este es el "más cercano" porque ve los comandos individuales pero no está bajo sudo , porque la primera línea es <<EOF no está (des)escapado correctamente.

**¿Cómo debo ejecutar un script arbitrario bajo sudo? sobre ssh ?”

Respuesta aceptada:

Me di cuenta poco después de publicar.

COMMAND_SSH="sudo -i <<'EOF'"`cat ./unifyServiceNode.sh``echo -e 'nEOF'` ;;

ssh -n -tt [email protected]$HOST "$COMMAND_SSH"; ## -n prevents reading the input. -tt forces TTY.

El ' adicional Al parecer, el problema era el comando SSH, y también necesitaba hacer la nueva línea a través de echo .

Sin embargo, no estoy muy seguro de si es solo un truco afortunado o la forma correcta de hacerlo. Para ser honesto, estoy completamente perdido en la evaluación de citas de Bash 🙂


Linux
  1. ¿Se puede conectar un script Bash a un archivo?

  2. Ssh – ¿Pasar contraseñas a un script?

  3. Bash Script:¿Comprobar si un archivo es un archivo de texto?

  4. Ssh:¿tráfico de túnel a través de otra máquina a través de Ssh?

  5. ¿Confirmar automáticamente al ejecutar scripts de Bash?

35 ejemplos de secuencias de comandos Bash

SSHFS:Montaje de un sistema de archivos remoto a través de SSH

Evitar que un script bash se ejecute simultáneamente

¿Ejecutar el mismo script en varios servidores a través de Ssh?

¿Cómo verifico la sintaxis de un script Bash sin ejecutarlo?

Empujando mi mensaje de PS1 sobre ssh