0

2 つのサーバー a と b の間でパスワードなしの ssh を有効にしていません。そのため、sshpass を使用して a からサーバー b に接続しています。

a からサーバー b の /etc/hosts にホスト エントリを追加する必要があります。しかし、サーバーbにログインしているユーザーは非ルートユーザーですが、ルートが所有するファイルを編集するsudo権限を持っています。

sshpass を使用しているときに、シェル スクリプトを介してサーバー a からサーバー b の /etc/hosts にホスト エントリを追加するにはどうすればよいですか。

試したスクリプトは次のとおりです。

#!/bin/bash

export SSHPASS="password"
SSHUSER=ciuser
WPC_IP=10.8.150.28

sshpass -e ssh -o UserKnownHostsFile=/dev/null -o 'StrictHostKeyChecking no' $SSHUSER@$WPC_IP "echo test >> /etc/hosts"

出力:

bash test.sh
Warning: Permanently added '10.8.150.28' (RSA) to the list of known hosts.
bash: /etc/hosts: Permission denied

ありがとうございました。

4

1 に答える 1

1

sudo リダイレクトでは直接動作しないsudo tee -aため、ファイルに追加するために使用できます。

echo '1.2.3.4 test' | sudo tee -a /etc/hosts

コマンドでは、これは次のようになります。

sshpass -e ssh -o UserKnownHostsFile=/dev/null -o 'StrictHostKeyChecking no' "$SSHUSER@$WPC_IP" "echo test | sudo tee -a /etc/hosts"

これには、tty を使用しないパスワードなしの sudo アクセスが必要であることに注意してください。これは、sudo 権限と必ずしも同じではありません。

于 2016-12-02T22:45:09.030 に答える