VPNチャネルを(インタラクティブに)開き、VPNセッションをバックグラウンドで維持する方法

Cbhihe

[Archlinux 4.18.9]

VPN経由でクラスターに接続するための簡単なエイリアスを作成しました。

alias clusvpn='sudo /usr/bin/openvpn --config client.ovpn'

これには特定の/etc/sudoersエントリが含まれているため、cmdの発行時に許可されたユーザーからsudoパスワードが要求されることはありません。

これにより、2つの入力要求が発生します。1つは離れたVPNサーバーに登録されているユーザーの名前用で、もう1つはユーザーのパスワード用です。手作業で、cliから、すべてが正常に機能します。問題ない。

ただし、チャネルが開いたら、つまりユーザーが名前とパスワードを入力すると、VPNセッションをバックグラウンドに自動的に配置したいと思います。理想的には、エイリアスを使用してcmdが発行されると同時にその事実を示したいと思います。ただし、発行するsudo /usr/bin/openvpn --config client.ovpn &と、ユーザーはユーザー名とパスワードを入力できなくなります。

パスワードとユーザー名を含むファイルに頼らずにこれを行う方法はありますか?

カミル・マシオロフスキー

あなたが話している資格情報は--auth-user-pass、ではなく、--askpass渡すことができることを理解しているので、--daemon役に立ちません。

使えると思いますexpect考えられる解決策のスケッチ:

  1. spawn sudo /usr/bin/openvpn --config client.ovpn プログラムを実行します。
  2. expect "Username: "または同様のもの(openvpn印刷内容によっては、現時点では確認できません)でプロンプトを待ちます。
  3. 次のようなコードを使用します。

    send_user "Username: "
    expect_user -re "(.*)\n"
    

    ユーザーからユーザー名を取得します。

  4. send "$expect_out(1,string)\n" それをプログラムに渡します。

  5. パスワードで繰り返してください、stty -echo役に立つかもしれません。
  6. 最後に使用forkdisconnect、プログラムをバックグラウンドに置きます。

あなたを助けるかもしれないマニュアルの例があります。「無効なパスワード、再試行」などの応答をカバーするロジックを実装することもできると思います。


これは私のまだテストされいないコードです:

#!/usr/bin/expect

log_user 0
set timeout -1

spawn sudo /usr/bin/openvpn --config client.ovpn

expect "*sername*"
send_user "Username: "
expect_user -re "(.*)\n"
send "$expect_out(1,string)\n"

expect "*assword*"
stty -echo
send_user "Password: "
expect_user -re "(.*)\n"
send "$expect_out(1,string)\n"
stty echo

send_user "\n"

if {[fork]!=0} exit
disconnect
expect eof

唯一のテストはDebianで行われ、別のコンソールでspawn nc …別のncリスニングに接続されていました。プロンプトと回答を正常に送信した後、元のメッセージはexpect終了しました。私はシェルプロンプトにいましたが、2つのnc-sはまだ接続されており、生成されたものはバックグラウンドで実行されていました。同じことが起こるはずですがopenvpn、私はこれをテストしたことがありませんopenvpn

ここからそれを取ってください(ヒント:行をコメントアウトするlog_user 0ことはテストに役立ちます)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

VPNサーバーがアクセスできる他のサブネットにアクセスできないVPNクライアントを開く

分類Dev

Pythonデバッガーpdbで、デバッグセッションを終了せずにインタラクティブモードを終了する方法

分類Dev

BackgroundTaskを介してバックグラウンドでマルチピア接続セッションを維持しますか?

分類Dev

それを呼び起こす人を除いて、スラッシュコマンドでチャンネルにインタラクティブメッセージを表示する方法は?

分類Dev

オンプレミスのデータゲートウェイトラフィックをサイト間VPN経由でルーティングする方法

分類Dev

ブルートゥース接続をバックグラウンドで維持する方法は?

分類Dev

ダイアログ(スタイルTheme.Dialog)を持つアクティビティを開いている間、アプリケーションはバックグラウンドで閉じます

分類Dev

インタラクティブなbashシェルセッションでファイルを取得する方法

分類Dev

Oracle APEX:インタラクティブグリッドでスイッチ列の新しい値をフェッチする方法(動的アクション-JavaScript)?

分類Dev

インタラクティブセッションでknitr / Rmdキャッシュを読み取る方法は?

分類Dev

単一のターミナルウィンドウで、バックグラウンドジョブとして実行される各3回a.outを開始するコマンドをキャプチャします

分類Dev

他のクラスでメソッドを実行するときに、WPFでGUIの応答性とインタラクティブ性を維持する

分類Dev

ネットワークトラフィックをVPNに再ルーティングする

分類Dev

アプリがバックグラウンドにあるときにタイムスタンプを保存します。リアクトネイティブ

分類Dev

バックグラウンドでPythonスクリプトを実行した後、インタラクティブなPythonシェルを開く

分類Dev

異なるインターフェースを介してVPNとインターネットトラフィックをルーティングする

分類Dev

ios-バックグラウンド状態から再開した後、特定のアクティブなViewControllerの画面の向きを維持します

分類Dev

Pythonインタラクティブセッションを保存する方法

分類Dev

新しいアクティビティが開始されてもアプリをバックグラウンドに維持する

分類Dev

アクティブでないアプリケーションを使用する(バックグラウンド)

分類Dev

ネイティブリアクションネイティブライブラリをAndroid Studioでデバッグする方法は?

分類Dev

sshpassプロセスをバックグラウンドで維持する方法は?

分類Dev

asp.netアプリケーションでユーザーが3分間非アクティブなときにセッションタイムアウトを維持する方法

分類Dev

CURLを介してhtpasswdにログインし、ブラウザでセッションを維持します

分類Dev

Windowsでバッチスクリプトまたはシェルスクリプトを使用してCiscoAnyConnectセキュアモビリティクライアントVPNに接続する方法

分類Dev

Rシャイニーのインタラクティブプロットとウィジェットの同期を維持する

分類Dev

別のXセッションで開いているウィンドウにキーストロークを送信するコマンドラインの方法

分類Dev

バックグラウンドでマルチステップAPIトランザクションをトリガーする方法は?

分類Dev

ファイアウォール アウトバウンド ルールで VPN トラフィックを許可する方法

Related 関連記事

  1. 1

    VPNサーバーがアクセスできる他のサブネットにアクセスできないVPNクライアントを開く

  2. 2

    Pythonデバッガーpdbで、デバッグセッションを終了せずにインタラクティブモードを終了する方法

  3. 3

    BackgroundTaskを介してバックグラウンドでマルチピア接続セッションを維持しますか?

  4. 4

    それを呼び起こす人を除いて、スラッシュコマンドでチャンネルにインタラクティブメッセージを表示する方法は?

  5. 5

    オンプレミスのデータゲートウェイトラフィックをサイト間VPN経由でルーティングする方法

  6. 6

    ブルートゥース接続をバックグラウンドで維持する方法は?

  7. 7

    ダイアログ(スタイルTheme.Dialog)を持つアクティビティを開いている間、アプリケーションはバックグラウンドで閉じます

  8. 8

    インタラクティブなbashシェルセッションでファイルを取得する方法

  9. 9

    Oracle APEX:インタラクティブグリッドでスイッチ列の新しい値をフェッチする方法(動的アクション-JavaScript)?

  10. 10

    インタラクティブセッションでknitr / Rmdキャッシュを読み取る方法は?

  11. 11

    単一のターミナルウィンドウで、バックグラウンドジョブとして実行される各3回a.outを開始するコマンドをキャプチャします

  12. 12

    他のクラスでメソッドを実行するときに、WPFでGUIの応答性とインタラクティブ性を維持する

  13. 13

    ネットワークトラフィックをVPNに再ルーティングする

  14. 14

    アプリがバックグラウンドにあるときにタイムスタンプを保存します。リアクトネイティブ

  15. 15

    バックグラウンドでPythonスクリプトを実行した後、インタラクティブなPythonシェルを開く

  16. 16

    異なるインターフェースを介してVPNとインターネットトラフィックをルーティングする

  17. 17

    ios-バックグラウンド状態から再開した後、特定のアクティブなViewControllerの画面の向きを維持します

  18. 18

    Pythonインタラクティブセッションを保存する方法

  19. 19

    新しいアクティビティが開始されてもアプリをバックグラウンドに維持する

  20. 20

    アクティブでないアプリケーションを使用する(バックグラウンド)

  21. 21

    ネイティブリアクションネイティブライブラリをAndroid Studioでデバッグする方法は?

  22. 22

    sshpassプロセスをバックグラウンドで維持する方法は?

  23. 23

    asp.netアプリケーションでユーザーが3分間非アクティブなときにセッションタイムアウトを維持する方法

  24. 24

    CURLを介してhtpasswdにログインし、ブラウザでセッションを維持します

  25. 25

    Windowsでバッチスクリプトまたはシェルスクリプトを使用してCiscoAnyConnectセキュアモビリティクライアントVPNに接続する方法

  26. 26

    Rシャイニーのインタラクティブプロットとウィジェットの同期を維持する

  27. 27

    別のXセッションで開いているウィンドウにキーストロークを送信するコマンドラインの方法

  28. 28

    バックグラウンドでマルチステップAPIトランザクションをトリガーする方法は?

  29. 29

    ファイアウォール アウトバウンド ルールで VPN トラフィックを許可する方法

ホットタグ

アーカイブ