web-dev-qa-db-ja.com

シェルスクリプトを使用してSSHターミナルにコマンドをエコーまたは貼り付ける方法

私は最近、sshターミナルに自動的にログインした後、シェルスクリプトでコマンドをsshターミナルに貼り付ける方法を理解しようとする問題を抱えています。私は、Ubiquitiアクセスポイントのssh端末に自動的にログインし、特定の時間にLEDをオフにするコマンドを挿入するシェルスクリプトを実行するcronタブをセットアップしようとしています。これまでのところ、シェルスクリプトを実行すると自動的にアクセスポイントにSSH接続できましたが、ログインするとコマンドが貼り付けられません。 SSHターミナルを手動で終了した後、echoコマンドが実行され、ターミナルを離れた後にコマンドが配置されます。誰かがこれを理解するのを助けることができるかどうか私は思っていました。私はどこでも探していましたが、答えを見つけることができません。よろしくお願いします。これは、現在シェルスクリプトにあるコードです。 SSHターミナルで実行できるようにしたいコマンドは( "mgmt.led_pa​​ttern_override = 2" >>/var/etc/persistent/cfg/mgmt)です。

   #!/bin/sh
sshpass -p "password" ssh -o StrictHostKeyChecking=no [email protected];
   echo '"mgmt.led_pattern_override=2" >> /var/etc/persistent/cfg/mgmt';
exit
2
GeorJon4

対話型のsshセッションを開始する代わりに、schoの引数として直接echoコマンドを渡します。

sshpass -p "password" ssh -o StrictHostKeyChecking=no [email protected] '
   echo "mgmt.led_pattern_override=2" >> /var/etc/persistent/cfg/mgmt
'

もう1つのオプションは、expectを使用してインタラクティブセッションをスクリプト化することですが、この場合は複雑すぎます。

2
steeldriver