関数内でsshを使用するには?

関数内でsshを使用するには?

以下のコマンドを使用してログインし、sshpassサーバー上でいくつかのコマンドを実行しようとしています。

SSH_ARGS='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -q'
sshpass -p 'password' ssh ${SSH_ARGS} user@IP 'sudo sed -i "/^server 0.rhel.pool.ntp.org/ { N; s/^server 0.rhel.pool.ntp.org\n/server xxx.xx.xx.xx iburst\n&/ }" /etc/ntp.conf'
sshpass -p 'password' ssh ${SSH_ARGS} user@IP 'sudo sed -i "/^#server 0.rhel.pool.ntp.org iburst/ { N; s/^#server 0.rhel.pool.ntp.org iburst\n/server xxx.xx.xx.xx iburst\n&/ }" /etc/ntp.conf'
echo "File /etc/ntp.conf is now edited"
sshpass -p 'password' ssh ${SSH_ARGS} user@IP 'sudo cat /etc/ntp.conf | grep "server xxx.xx.xx.xx iburst"'
if [ $? = 0 ];
then
sshpass -p 'password' ssh ${SSH_ARGS} user@IP 'sudo service ntpd status;sudo service ntpd restart'
else
echo "File /etc/ntp.conf is not updated in IP"
fi

だから毎回sshpassを繰り返す代わりにsshpass -p 'password' ssh ${SSH_ARGS} user@IP、変数や関数で使いたいです。どうすればいいですか?

私は全力を尽くした::

SSH_ARGS='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -q'
sshpp=`sshpass -p 'password' ssh ${SSH_ARGS} user@IP` 
$sshpp 'sudo service ntpd status'

この::

SSH_ARGS='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -q'
sshpp() {
sshpass -p 'password' ssh ${SSH_ARGS} user@IP` 
}
sshpp 'sudo service ntpd status'

頑張ったこれまた、動作しません。

sshpass毎回繰り返さずにこれを達成する方法は?

ベストアンサー1

あなたが探しているものは次のとおりですalias

alias sp='sshpass -p "password" ssh $SSH_ARGS user@IP'

したがって、次のコマンドを実行できます。

sp 'sudo sed -i "/^server 0.rhel.pool.ntp.org/ { N; s/^server 0.rhel.pool.ntp.org\n/server xxx.xx.xx.xx iburst\n&/ }" /etc/ntp.conf'

これらの繰り返し操作を実行するためのスクリプトを書くと、生活がより簡単になる可能性がありますが、これはこの質問の範囲外です。

おすすめ記事