SCPを使用してリモートLinuxシステムにファイルをコピーしたいと思います。
定期的にホストとdnsmasq.confを更新し、SCP:/etc/hosts /etc/dnsmasq.confを使用してリモートシステムにコピーします。
その後、「sudo systemctl restart dnsmasq」を実行する必要があります。
私は上記以外に、リモートユーザーがリモートシステムで何もしないようにします。
ありがとうございます!
答え1
ファイルが変更されるたびに(変更した人に関係なく)サービスを再起動するには、次のことをお勧めします。incron
リモートコンピュータから。
パッケージをインストールし、正しいincrontab
項目を設定してください。
/etc/dnsmasq.conf IN_MODIFY systemctl restart dnsmasq
createrepo
たとえば、ローカルリポジトリにrpmパッケージをアップロードするときにコマンドを実行するためにこれを使用しますが、スムーズに動作するようです。
答え2
@Fiximanが提案したように、次のコマンドを使用して必要な操作を実行できます。
ssh -o "PermitLocalCommand yes" -o "LocalCommand sleep 10 && sudo systemctl restart dnsmasq" user2@host2 "scp user1@host1:/path/to/source /path/to/target"
これは、ローカルファイルをリモートシステムにコピーするために実行されるscp
と同時に10秒待ってからローカルシステムをシャットダウンします。残念ながら、成功するかどうかにかかわらず、10秒後に終了しますscp
。
システムが十分に新しい場合は、感嘆符を使用してローカルでコマンドの実行をサポートできます(PermitLocalCommandが有効な場合)。この場合、-o "LocalCommand sleep 10 && sudo systemctl restart dnsmasq"
以下を使用する代わりに実行できます。
ssh -o "PermitLocalCommand yes" user2@host2 "scp user1@host1:/path/to/source /path/to/target && !sudo systemctl restart dnsmasq"
感嘆符は、ローカルシステムで実行されるコマンドを送信します。この場合、ローカルシステムは成功した場合にのみ終了し、不足しているscp
パスワードがあるかどうかを尋ねられます。
scp
成功したかどうかにかかわらず、ローカルシステムをシャットダウンするには、&&
に置き換えます;
。