ネットワークIDに基づくシステムサービスの定義

ネットワークIDに基づくシステムサービスの定義

次の質問があります。

ホームネットワークに転送したいネットワークドライブがありますsshfs。ローカルネットワークでは、暗号化を大幅に気にする必要はありません。たとえば、パスワードを使用できますarcfour。私のSSH内部ポートは、技術的な理由でA他のポートを介してssh外部ネットワークから接続できます。また、ホームネットワークにいるときに外部からポートに接続することはできません。これで、外部にインストールすると、当然追加の暗号化が使用されます。BA

systemd私はネットワーク上にある場合にのみポートを使用しarcfour、それ以外の場合は別のパスワードを使用してポートを介して接続して、このマウント状況を賢明に処理するサービスを構築したいと思います。私は自分のサービスを初めて作成しますが、ここに適用する正しい条件を見つけることができません。AXB

誰でもこの問題を解決するのに役立ちますか?

ベストアンサー1

2つのタスクを実行することをお勧めします。 1つはログイン時(インストール用)、もう1つはログアウト時(削除用)です。サンプルサービスファイル:

[Unit]    
Description=mount with sshfs

[Service]
Type=simple
ExecStart=/path/to/login_script.sh
#This makes the service stay active while logged in and
#  makes sure ExecStop is only executed at logout
RemainAfterExit=yes
ExecStop=/path/to/logout_script.sh

[Install]
#opens with first login and ends with last logout - multiple ssh sessions are OK
WantedBy=default.target

ログインおよびログアウトスクリプトを作成します。 SSID経由で自宅にいることを確認しましょう。あなたに合ったものが何であるかを確認してください。

#!/bin/bash
#login script
if [[ "$( nmlci | grep 'home_network_name' )" != "" ] ; then
   #we're at home
   sshfs <mount with home options>
else
   #we're out
   sshfs <mount with outside options>
fi

ログアウトしてから削除したいです。

#!/bin/bash
#logout script
fusermount -u /path/to/mount/point

サービスを有効にするには、exampleに入力し~/.cofig/systemd/user/autosshfs.serviceて実行しますsystemctl --user enable autosshfs.service。次回ログインするときに実行する必要があります。

おすすめ記事