2016-12-02 13 views
0

私の2つのサーバaとbの間でパスワードなしのsshを有効にしていません。ですから、私はsshpassを使ってaからサーバbに接続しています。シェルスクリプトを使用して/ etc/hostsファイルを変更します。

私は、サーバbの/ etc/hostsにホストエントリを追加する必要があります。しかし、サーバーbにログインしているユーザーはroot以外のユーザーですが、rootが所有するファイルを編集するための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' [email protected]$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 

ありがとうここ

を試みたスクリプトです。

+0

試したコマンドと失敗したコマンドを投稿できますか? –

+0

@thatotherguy:質問を更新しました。ありがとう – user2714227

答えて

1

sudodoesn't work with redirects直接、あなたがファイルに追加するsudo tee -aを使用することができます:あなたのコマンドで

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

、これは次のようになります。これはなしパスワードなしのsudoのアクセスを必要とすることが

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

注意ttyはsudoの特権と必ずしも同じではありません。

関連する問題