GNU/Linux >> Linux の 問題 >  >> Linux

Sudoを介してSsh上でスクリプトファイルを実行しますか?

sudo su -を実行できるユーザーとしてリモートマシンにログインできます 。 rootとしてログインできません。

リモートマシンで実行したいスクリプトがローカルにあります。また、スクリプトは別のスクリプトを介してそこに送信されます。

方法がわかりません。ここでかなりの数のQ&Aを赤字にしましたが、成功しませんでした。私が持っている最も近いもの:

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

これは、次の出力で終わります:

======== [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.

これは、個々のコマンドを表示しますが、sudoの下にはないため、「最も近い」ものです。 、最初の行の<<EOF 正しくエスケープされていません。

** sudoで任意のスクリプトを実行するにはどうすればよいですか ssh以上 ?」

承認された回答:

投稿してすぐにわかりました。

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.

追加の' SSHコマンドの周りの問題が問題だったようです。また、echoを使用して改行を作成する必要がありました。 。

しかし、それが単なる幸運なハックなのか、それとも正しい方法なのかはよくわかりません。正直なところ、私はBashの見積もり評価で完全に迷子になっています🙂


Linux
  1. Bashスクリプト:ファイルがテキストファイルかどうかを確認しますか?

  2. Sshを介して複数のサーバーで同じスクリプトを実行しますか?

  3. Bashスクリプトの実行時に自動確認しますか?

  1. Bash スクリプト:不適切なインタープリター

  2. Linux bashでphpスクリプト(php関数)を実行する

  3. Bash でテキスト ファイルをコマンドとして実行する

  1. 前回の実行時の値を保持する Bash スクリプトの変数

  2. ファイルを bash シェル スクリプトに含める方法

  3. シェル スクリプトを使用してファイルの内容を変更する