6.2 vpncmd の一般的な使用方法 - SoftEther VPN プロジェクト

6.2 vpncmd の一般的な使用方法

    ここでは、「vpncmd」コマンドの一般的な使用方法や、コマンド入力規則、ヘルプの表示方法などについて解説します。

    6.2.1 コマンドの入力規則

    入力プロンプト

    「vpncmd」がコマンド入力を受け付ける状態の時は、画面上に ">" という文字が表示され、新しいコマンドをキーボードから入力することができます。

    このプロンプトの状態には 4 種類あり、現在 vpncmd がどのモードで動作しているかを知ることができます。

    VPN Server を管理するモード

    VPN Server に対して管理接続した直後の状態では、VPN Server 全体を管理するモードになっています。このときのプロンプトは下記のようになります。


    VPN Server>

     

    このモードでは、接続先の VPN Server 全体を管理するコマンドのみを呼び出すことができます。たとえば「ServerStatusGet」コマンドや 「HubCreate」コマンドなどです。使用できるコマンドの数は、約 60 個です。

    また、この状態で「Hub」コマンドを使用して、管理したい仮想 HUB を選択すると、仮想 HUB を管理するモードに移行します。

     

    VPN Server>Hub Default
    Hub コマンド - 管理する仮想 HUB の選択
    仮想 HUB "DEFAULT" を選択しました。
    コマンドは正常に終了しました。
    
    VPN Server/DEFAULT>

    仮想 HUB を管理するモード

    仮想 HUB を管理するモードは、VPN Serverに対して「仮想 HUB 管理モード」で接続時に指定した「仮想 HUB」、あるいはHub コマンドによって選択された 「仮想 HUB」を選択している状態であり、このときのプロンプトは下記のようになります。

     

    VPN Server/仮想 HUB 名>

     

    この状態では、仮想 HUB を管理するためのコマンドも呼び出すことが可能になります。たとえば「Online」コマンドや「SetMaxSession」コマンドなどです。また「VPN Server を管理するモード」で使用することができる 、VPN Server 全体に対する管理コマンドも引き続き呼び出すことができます。使用できるコマンドの数は、約 170 個です。

    なお、仮想 HUB を管理するモードから VPN Server を管理するモードに戻るには、「Hub」コマンドをコマンドラインに引数を付けずに呼び出してください。

    VPN Server/DEFAULT>Hub
    Hub コマンド - 管理する仮想 HUB の選択
    仮想 HUB の選択を解除しました。
    コマンドは正常に終了しました。
    
    VPN Server>

     

    VPN Bridge を管理する場合も、VPN Server を管理する場合とほぼ同様に、上記の操作方法で管理を行うことができます。なお、VPN Bridge では、仮想 HUB は "BRIDGE" という名前のものが 1 つだけ存在しますので、常に "BRIDGE" 仮想 HUB を管理することになります。

    VPN Client を管理するモード

    「VPN Client」に対して管理接続した場合は、次のようなプロンプトが表示されます。

    VPN Client>

     

    ここでは、VPN Client を制御するためのコマンドを実行することができます。使用できるコマンドの数は、約 65 個です。

    VPN Tools モード

    「VPN Tools モード」で「vpncmd」を起動した場合は、VPN Server や VPN Client などに接続せずに、vpncmd を実行したコンピュータでローカルに実行することができるコマンドのみを起動することができます。VPN Tools モードで使用することができるコマンドは、以下の 5 個のみです。

    • About コマンド
    • MakeCert コマンド
    • TrafficClient コマンド
    • TrafficServer コマンド
    • Check コマンド

    なお、これらの 5 個のコマンドは、VPN Tools モード以外のモードからも実行することができるようになっています。

    VPN Tools モードで動作している場合は、次のようなプロンプトが表示されます。

    VPN Tools>
     

     

    vpncmd の終了

    vpncmd を終了するには、「exit」と入力します。

    使用できるコマンド一覧の取得

    現在のモードで使用することができるコマンド一覧を取得するには、「Help」または「?」と入力します。

     

    VPN Tools>?
    下記の 5 個のコマンドが使用できます:
     About         - バージョン情報の表示
     Check         - PacketiX VPN の動作が可能かどうかチェックする
     MakeCert      - 新しい X.509 証明書と秘密鍵の作成
     TrafficClient - 通信スループット測定ツールクライアントの実行
     TrafficServer - 通信スループット測定ツールサーバーの実行
    
    それぞれのコマンドの使用方法については、"コマンド名 /?" と入力するとヘルプが表示
    されます。
    コマンドは正常に終了しました。

     

    コマンドの入力

    「vpncmd」のプロンプトに対してコマンドを入力する場合は、下記のように入力します。

    >コマンド名 引数 /パラメータ名:引数 /パラメータ名:引数 ...
     
    • コマンド名
      コマンド名は、呼び出したいコマンドの名前です。コマンド名は大文字・小文字を区別しません。またコマンド名が長くてタイプしにくい場合は、一部のみを入力することで後述する機能によって 「自動補完」させることができます。
    • 引数 (パラメータ)
      コマンドには「引数」を指定することができる場合があります。引数には「名前なし引数」と「名前付き引数」の 2 種類があります。
      「名前無し引数」を指定する場合は、コマンド名の後に引数の内容を文字列として記述します。
      「名前付き引数」を指定する場合は、"/引数名:" のように、スラッシュの後に引数名と : (コロン) を指定し、その後に引数の内容を指定します。なお、スラッシュの代わりにハイフン (-) を使用することもできます。また、引数名が長い場合は後述する機能によって「自動補完」させることができます。引数名は大文字・小文字を区別しません。
      引数は複数指定できる場合があります。そのような場合は、「スペース (空白文字)」で区切って指定します。また、引数の中にスペースを含む文字がある場合は引数の内容を " " (2 重引用符) で囲んで指定します。

    たとえば、「BridgeCreate」コマンドの入力規則は、以下のようになっています。

    BridgeCreate [hubname] [/DEVICE:device_name] [/TAP:yes|no]

     

    この BridgeCreate コマンドに対して、名前無し引数である [hubname] に「TEST」を、DEVICE 引数に「"Intel(R) PRO/1000 MT Desktop Adapter"」を、TAP 引数に「no」を指定する場合は次のように呼び出します。

    >BridgeCreate TEST /DEVICE:"Intel(R) PRO/1000 MT Desktop Adapter" /TAP:no

     

    なお、各引数の順序は変わっても問題ありません。たとえば、

    >BridgeCreate /DEVICE:"Intel(R) PRO/1000 MT Desktop Adapter" /TAP:no TEST

    と入力しても同等の処理が実行されます。

    省略した引数がある場合

    「vpncmd」では、ほぼすべての引数を「省略」することができます。必要な引数を省略してもエラーにはならず、画面上に省略したパラメータの内容を入力するように促すプロンプトが表示されます。たとえば、前出の BridgeCreate コマンドを、引数を付けずに起動すると、次のようにプロンプトが表示され、ユーザーはそのプロンプトに対して下記の赤い部分のように必要項目を指定することになります。

    VPN Server>BridgeCreate
    BridgeCreate コマンド - ローカルブリッジ接続の作成
    ブリッジする仮想 HUB 名: TEST
    
    ブリッジ先のデバイス名: Intel(R) PRO/1000 MT Desktop Adapter
    なお、上記の例では /TAP 引数は指定していませんが、/TAP 引数の内容を問い合わせるプロンプトは表示されませんでした。このように、一部の引数は、普段はほとんど指定する必要がないため、単に引数を付けずにコマンドだけを実行した場合に 、表示されるプロンプトで内容を問われずに、「デフォルト値」が使用されるものもあります。このような動作については、「コマンドヘルプ」に記載されています。

    また、その項目がパスワードなどの画面に表示させない方が良い文字列の場合は、プロンプトでユーザーが入力した文字はアスタリスク (*) でマスクされて表示されます。

    コマンド名の命名規則

    「vpncmd」では、合計 200 個を超える大量のコマンドを使用するこができます。これらのコマンドすべてを覚えるのは困難であるため、vpncmd ではコマンドの「命名規則」を分かりやすくし、たとえば通常のコマンドラインプログラムのように習得するのに時間がかかるようなことは避け、実行したい操作の対象物が 分かっていれば、それを指定するだけで、その対象物の操作を行うことができる「コマンドの一覧」を表示させることができます。

    原則として、vpncmd の各コマンドの名称は、『操作の対象物の名称の後に、操作の名前が来る』というような命名規則が制定されています (一部例外があります)。

    たとえば、「サーバーの情報を取得する」というコマンドは「ServerInfoGet」という名前です。また、ユーザーを作成するコマンドは 「UserCreate」、作成済みユーザーに関する情報を取得するコマンドは「UserGet」、ユーザーを削除するコマンドは 「UserDelete」、ユーザーのリストを表示するコマンドは「UserList」といった具合に、操作対象のオブジェクトの種類や名称が先頭に、動詞が末尾に来るという命名体系を持っています。

    このため、たとえば「ユーザーを削除するコマンドを忘れてしまったので、ユーザー操作に関するコマンド一覧を取得したい」と思った場合は、以下のように入力するだけで 、ユーザー操作に関するコマンド一覧とその簡易説明が表示されます。

    VPN Server>user?
    "user": コマンドが曖昧です。
    指定されたコマンド名は、次の複数のコマンドに一致します:
     UserAnonymousSet - ユーザーの認証方法を匿名認証に設定
     UserCertGet      - 固有証明書認証のユーザーの登録されている証明書の取得
     UserCertSet      - ユーザーの認証方法を固有証明書認証に設定し証明書を設定
     UserCreate       - ユーザーの作成
     UserDelete       - ユーザーの削除
     UserExpiresSet   - ユーザーの有効期限の設定
     UserGet          - ユーザー情報の取得
     UserList         - ユーザー一覧の取得
     UserNTLMSet      - ユーザーの認証方法を NT ドメイン認証に設定
     UserPasswordSet  - ユーザーの認証方法をパスワード認証に設定しパスワードを設定
    
     UserPolicyRemove - ユーザーのセキュリティポリシーの削除
     UserPolicySet    - ユーザーのセキュリティポリシーの設定
     UserRadiusSet    - ユーザーの認証方法を Radius 認証に設定
     UserSet          - ユーザー情報の変更
     UserSignedSet    - ユーザーの認証方法を署名済み証明書認証に設定
    より厳密にコマンド名を指定し直してください。

     

    コマンド名の自動補完機能 (前方一致による指定)

    「vpncmd」では多くのコマンドがあります。中にはコマンド名が長く、入力するのが面倒なものも多くあります。そのような場合はコマンドの自動補完機能を用いて 、コマンドの一部のみを入力することで、そのコマンドを呼び出すことができます。

    たとえば、「ServerPasswordSet」コマンドを入力するのが面倒な場合は、先頭からコマンドを入力していき、その状態で使用可能なコマンド一覧を 、入力された文字列によって前方一致し探索した結果、呼び出しべきコマンドが 1 つに定まる場合に、そのコマンド名が内部で補完され自動的に実行されます。「ServerPasswordSet」コマンドの場合は、先頭の 6 文字である "ServerP" の時点で 、他に重複するコマンドがなくなりますので、「serverp」と入力するだけでも実行が可能です。

    VPN Server>serverp
    ServerPasswordSet コマンド - VPN Server の管理者パスワードの設定
    パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。
    
    パスワード: ********
    確認入力  : ********
    
    コマンドは正常に終了しました。

    もし、前方一致探索の結果、ユーザーが入力したコマンド名と一致するコマンドが 2 個以上存在し、実行すべきコマンドが 1 つに定まらない場合は、「コマンドが曖昧です。指定されたコマンド名は、次の複数のコマンドに一致します: より厳密にコマンド名を指定し直してください。」というメッセージと共に、ユーザーが入力した文字列と一致する可能性があるコマンド一覧と、簡易ヘルプが表示されます。

    VPN Server>server
    "server": コマンドが曖昧です。
    指定されたコマンド名は、次の複数のコマンドに一致します:
     ServerCertGet     - VPN Server の SSL 証明書の取得
     ServerCertSet     - VPN Server の SSL 証明書と秘密鍵の設定
     ServerCipherGet   - VPN 通信で使用される暗号化アルゴリズムの取得
     ServerCipherSet   - VPN 通信で使用される暗号化アルゴリズムの設定
     ServerInfoGet     - サーバー情報の取得
     ServerKeyGet      - VPN Server の SSL 証明書の秘密鍵の取得
     ServerPasswordSet - VPN Server の管理者パスワードの設定
     ServerStatusGet   - サーバーの現在の状態の取得
    より厳密にコマンド名を指定し直してください。

    このような場合は、さらに数文字を追加で入力し、実行すべきコマンドが一意に決定されるところまで指定し直してください。

    コマンド名の自動補完機能 (省略形による指定)

    上記の、「前方一致探索」によるコマンドの自動補完は便利ですが、コマンド名が長く、先頭部分の文字列として共通するものが多くあるような場合は、結局多くの文字数をタイプしなければなら ない事もあり不便です。このような場合は、もう一つの補完機能として「省略形の指定」という方法を用いることで、タイプ量を減らすことができます。

    たとえば、下記のような、3 つのコマンドが存在するとします。

    • RouterIfList [name]
    • RouterIfAdd [name] [/HUB:hub] [/IP:ip/mask]
    • RouterIfDel [name] [/HUB:hub]

    上の例のような 3 つのコマンドは、すべて "RouterIf" という文字列で始まっているため、前方一致による指定を行う場合でも 、必ず "routerif" という 8 文字は指定しなければなりません。

    そこで「省略形による指定」を行うと、それぞれ以下のように省略することができます。

    コマンド名 省略系の例
    RouterIfList RIL
    RouterIfAdd RIA
    RouterIfDel RID

    この例を見ても明らかなように、vpncmd では、コマンド名が大文字と小文字で構成されているような場合 (大半のコマンド) では、そのコマンドの「大文字部分のみを並べて指定」するだけで、実行すべきコマンドを特定することができます (省略形を入力する際は小文字でも差し支えありません)。

    他にも、長いコマンドは以下の例のように省略することができます。

    コマンド名 省略系の例
    LogPacketSaveType lpst
    RadiusServerSet rss
    SetMaxSession sms
    ClusterMemberInfoGet cmig
    ServerStatusGet ssg

    さらに、各コマンドの大文字部分だけを抜き出した省略形に対しても、前方一致探索によって一意に実行すべきコマンドが定まる場合は、省略形のうち前方の数文字を入力するだけでもコマンドを認識させることができます。たとえば上記の 「LogPacketSaveType」コマンドの省略形である「lpst」の前方数文字だけを取って、「lps」や 「lp」などと入力しても構いません。

    これらの手法を用いることによって、vpncmd のユーザーは、コマンド実行時にタイプすべき文字数を大幅に削減することができるとともに、何度か同一のコマンドを実行する際に、そのコマンドの省略形を覚えることができ、少ないタイプ量で高速なコマンド入力を学習することができます。

    パラメータ名の自動補完機能

    コマンド名と同様に、コマンドを呼び出す際に入力する「パラメータ名」(引数名) についても、前方一致が成功するような形で「省略形」を指定することができます。たとえば「SecureNatHostSet」コマンドで指定できる「パラメータ 」は下記のように定義されています。

    NatSet [/MTU:mtu] [/TCPTIMEOUT:tcp_timeout] [/UDPTIMEOUT:udp_timeout] [/LOG:yes|no]
    このコマンドでは、「/MTU」「/TCPTIMEOUT」「/UDPTIMEOUT」、および「/LOG」の 4 つの引数を指定することができますが、それぞれの引数名として、その引数名の先頭から、先方一致検索で一意になるような数文字を指定することによって、引数付き呼び出しを行うことができます。したがって 上の例では 4 つのパラメータは、以下のように名前を省略して指定できます。
    引数名 省略系の例
    /MTU /M
    /TCPTIMEOUT /T
    /UDPTIMEOUT /U
    /LOG /L

     

    表示される文字列入力プロンプトまたはパスワード入力プロンプトをキャンセルする方法

    各コマンドでは、すべてのパラメータを引数一覧として指定することができますが、必要な引数の指定を省略した場合は、その都度画面上に、その項目を指定するための 「入力プロンプト」が表示されます。

    プロンプトでの入力をキャンセルして、コマンドの実行そのものを取りやめる場合は、「Ctrl」+「D」キーを押してください。

     

    VPN Server>sps
    ServerPasswordSet コマンド - VPN Server の管理者パスワードの設定
    パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。
    
    パスワード: ***
    確認入力  : ^D
    
    VPN Server>

     

    上の例では、パスワードプロンプト上で「Ctrl」+「D」を押したことによって、そのコマンドの実行をキャンセルして、コマンドプロンプトに戻っています。

    6.2.2 コマンドヘルプの表示

    コマンドヘルプとは

    「vpncmd」には、大量のコマンドが実装されています。すべてのコマンドに関するリファレンスは、本マニュアルに含まれていますが、vpncmd を使用する際に、コマンド名やコマンドに対して指定する必要のある引数一覧、およびコマンドの動作内容について忘れてしまった場合に、本マニュアルを用意しなくてもすぐにコマンドに関する詳細を知ることができるようにするため、vpncmd には、すべてのコマンドに関する「オンラインヘルプ」が搭載されています。

    特定のコマンドに関するオンラインヘルプを表示するには

    すでにコマンド名が分かっている場合、そのコマンドに関するオンラインヘルプは、次のいずれかの方法で表示させることができます。

    • コマンド名 --help
    • コマンド名 -help
    • コマンド名 /help
    • コマンド名 -?
    • コマンド名 /?
    • コマンド名?
    • man コマンド名
    • ?コマンド名

    上記のいずれの方法でも表示される内容は同一ですので、「--help 形式」や「/? 形式」など、普段使い慣れた形式を使用してコマンドヘルプを表示してください。

    たとえば、「BridgeCreate」コマンドのヘルプを表示した例は、以下のとおりです。

     

    VPN Server>BridgeCreate?
    BridgeCreate コマンド - ローカルブリッジ接続の作成
    コマンド "BridgeCreate" のヘルプ
    
    [目的]
      ローカルブリッジ接続の作成
    [説明]
      新しいローカルブリッジ接続を VPN Server 上に作成します。
      ローカルブリッジを使用すると、この VPN Server 上で動作する仮想 HUB と物理的な
       Ethernet デバイス (LAN カード) との間でレイヤ 2 ブリッジ接続を構成することが
      できます。
      システムに tap デバイス (仮想のネットワークインターフェイス) を作成し、仮想
      HUB との間でブリッジ接続することもできます (tap デバイスは Linux 版のみサポー
      トされています)。
      ブリッジ先の Ethernet デバイス (LAN カード) には、稼働中の任意の LAN カードと
      の間でブリッジできますが、高負荷環境においてはブリッジ専用に LAN カードを用意
      することをお勧めします。
      このコマンドを実行するには、VPN Server の管理者権限が必要です。
    
    [使用方法]
      BridgeCreate [hubname] [/DEVICE:device_name] [/TAP:yes|no]
    [パラメータ]
      hubname - このパラメータに関する説明はありません。
      /DEVICE - ブリッジ先の Ethernet デバイス (LAN カード) 名または tap デバイス名
                を指定します。Ethernet デバイス名の一覧は BridgeDeviceList コマンド
                で取得することができます。
      /TAP    - ブリッジ先として LAN カードではなく tap デバイスを使用する場合は y
                es を指定します (Linux 版のみサポートされます)。省略した場合は no
                と見なされます。
    VPN Server>
     

     

    使用できるコマンド名の一覧を表示するには

    使用すべきコマンド名が分からない時、現在の管理モードで使用することができるコマンド名の一覧は、次のように入力することで表示させることができます。

    • man
    • help
    • ?

    たとえば VPN Server 管理モードでは、以下のように表示されます。

     

    VPN Server>help
    下記の 173 個のコマンドが使用できます:
     About                      - バージョン情報の表示
     AcAdd                      - IP アクセス制御リストにルールを追加
     AcDel                      - IP アクセス制御リスト内のルールの削除
     AcList                     - IP アクセス制御リストのルール一覧の取得
     AccessAdd                  - アクセスリストへのルールの追加
     AccessDelete               - アクセスリストからルールを削除
       : (省略)
     UserSet                    - ユーザー情報の変更
     UserSignedSet              - ユーザーの認証方法を署名済み証明書認証に設定
    
    それぞれのコマンドの使用方法については、"コマンド名 /?" と入力するとヘルプが表示
    されます。
    VPN Server>

     

    なお、操作対象のオブジェクトの種類が分かっているなど、コマンド名の先頭の数文字を知っている場合は、以下のように入力することで、その文字列で始まるコマンド一覧を表示 させることができます。

    • 先頭数文字 --help
    • 先頭数文字 -help
    • 先頭数文字 /help
    • 先頭数文字 -?
    • 先頭数文字 /?
    • 先頭数文字?
    • man 先頭数文字
    • ?先頭数文字

    たとえば、「カスケード接続」に関する操作を行うコマンドの一覧を知るには、「cascade?」と入力してください。

    VPN Server>cascade?
    "cascade": コマンドが曖昧です。
    指定されたコマンド名は、次の複数のコマンドに一致します:
     CascadeAnonymousSet      - カスケード接続のユーザー認証の種類を匿名認証に設定
    
     CascadeCertGet           - カスケード接続に用いるクライアント証明書の取得
     CascadeCertSet           - カスケード接続のユーザー認証の種類をクライアント証
                                明書認証に設定
     CascadeCompressDisable   - カスケード接続の通信時のデータ圧縮の無効化
     CascadeCompressEnable    - カスケード接続の通信時のデータ圧縮の有効化
     CascadeCreate            - 新しいカスケード接続の作成
     CascadeDelete            - カスケード接続の削除
     CascadeDetailSet         - カスケード接続の高度な通信設定の設定
     CascadeEncryptDisable    - カスケード接続の通信時の暗号化の無効化
     CascadeEncryptEnable     - カスケード接続の通信時の暗号化の有効化
     CascadeGet               - カスケード接続の設定の取得
     CascadeList              - カスケード接続一覧の取得
     CascadeOffline           - カスケード接続のオフライン状態への設定
     CascadeOnline            - カスケード接続のオンライン状態への設定
     CascadePasswordSet       - カスケード接続のユーザー認証の種類をパスワード認証
                                に設定
     CascadePolicySet         - カスケード接続セッションのセキュリティポリシーの設
                                定
     CascadeProxyHttp         - カスケード接続の接続方法を HTTP プロキシサーバー経
                                由接続に設定
     CascadeProxyNone         - カスケード接続の接続方法を直接 TCP/IP 接続に設定
     CascadeProxySocks        - カスケード接続の接続方法を SOCKS プロキシサーバー経
                                由接続に設定
     CascadeRename            - カスケード接続の名前の変更
     CascadeServerCertDelete  - カスケード接続のサーバー固有証明書の削除
     CascadeServerCertDisable - カスケード接続のサーバー証明書の検証オプションの無
                                効化
     CascadeServerCertEnable  - カスケード接続のサーバー証明書の検証オプションの有
                                効化
     CascadeServerCertGet     - カスケード接続のサーバー固有証明書の取得
     CascadeServerCertSet     - カスケード接続のサーバー固有証明書の設定
     CascadeSet               - カスケード接続の接続先の設定
     CascadeStatusGet         - カスケード接続の現在の状態の取得
     CascadeUsernameSet       - カスケード接続の接続に使用するユーザー名の設定
    より厳密にコマンド名を指定し直してください。
    VPN Server>
     

     

    6.2.3 vpncmd コマンド起動時のコマンドラインパラメータ

    「vpncmd」コマンド自体も、いくつかの「引数」を付けて起動することができます。通常 vpncmd を起動すると、管理モードや接続先のサーバーの IP アドレスなどを入力するプロンプトが表示されますが、vpncmd に「コマンドライン引数」を付けて起動することによって、自動的に指定された VPN Server に接続したり、さらに指定したコマンドを実行してその結果をファイルに書き出したりすることが簡単に行えます。

    vpncmd コマンドの概要は、以下のとおりです。

     

    vpncmd コマンドリファレンス
    コマンド名 vpncmd
    コマンドの概要 PacketiX VPN コマンドライン管理ユーティリティ
    説明 vpncmd プログラムは、PacketiX VPN ソフトウェアをコマンドラインで管理することができるユーティリティです。vpncmd を使用すると、ローカルまたはリモートコンピュータで動作している VPN Client、VPN Server、および VPN Bridge に接続してそれらのサービスを管理することができます。また、VPN Tools モードを使用して、VPN Server や VPN Client に接続していなくても使用できる証明書の作成や速度測定機能などを呼び出すこともできます。
    vpncmd では、/IN および /OUT パラメータとしてファイル名を指定した場合、実行するコマンドを列挙したファイルに従ってコマンドを一括実行したり、実行結果をファイルに書き出すことができます。通常、vpncmd を起動した場合はコマンドプロンプトが表示されますが、/IN パラメータで入力ファイルを指定した場合は入力ファイルのすべての行の実行が完了すると自動的に終了します。また、/CMD パラメータで実行するコマンドを指定した場合、そのコマンドの実行が完了すると自動的に終了します。/IN パラメータと /CMD パラメータは同時に指定することはできません。vpncmd プログラムの終了コードは、最後に実行したコマンドのエラーコード (成功した場合は 0) となります。
    Windows 環境では、管理者権限で 1 度以上 vpncmd を起動すると、次回から Windows のコマンドプロンプトや [ファイル名を指定して実行] を開いて vpncmd と入力するだけで vpncmd を起動することができるようになります。UNIX システムで同様のことを実現するためには、PATH 環境変数を手動で適切に設定することができます。
    コマンドライン書式 vpncmd [host:port] [/CLIENT|/SERVER|/TOOLS] [/HUB:hub] [/ADMINHUB:adminhub] [/PASSWORD:password] [/IN:infile] [/OUT:outfile] [/CMD commands...]
    vpncmd コマンドで指定することができるパラメータ引数の一覧
    host:port [ホスト名:ポート番号] の形式のパラメータを指定すると、そのホストに自動的に接続します。指定しない場合は、接続先を入力するプロンプトが表示されます。VPN Client に接続する場合は、ポート番号は指定できません。
    /CLIENT VPN Client に接続して管理を行います。/SERVER と共に指定することはできません。
    /SERVER VPN Server または VPN Bridge に接続して管理を行います。/CLIENT と共に指定することはできません。
    /TOOLS VPN Tools のコマンドを使用できるプロンプトを表示します。これには、証明書簡易作成ツール (MakeCert コマンド) および通信速度測定ツール (SpeedTest コマンド) などが含まれます。
    /HUB VPN Server に「仮想 HUB 管理モード」で接続する際の仮想 HUB 名 'hub' を指定します。ホスト名を指定して /HUB パラメータを指定しない場合は、「サーバー管理モード」で接続します。
    /ADMINHUB VPN Server に接続した後に自動的に選択する仮想 HUB 名 'adminhub' を指定します。/HUB パラメータを指定した場合は、その仮想 HUB が自動的に選択されますので、指定する必要はありません。
    /PASSWORD 接続する際に管理パスワードが必要な場合は、パスワード 'password' を指定します。パスワードが指定されていない場合は、入力するプロンプトが表示されます。
    /IN 接続が完了した後に自動的に実行するコマンドの一覧が記載されたテキストファイル名 'infile' を指定します。/IN パラメータが指定されている場合は、ファイル内のすべての行の実行が完了した後に自動的に vpncmd プログラムは終了します。ファイルに多バイト文字が含まれている場合は、Unicode (UTF-8) でエンコードされている必要があります。/CMD と共に指定することはできません (/CMD と共に指定した場合は /IN は無視されます)。
    /OUT 画面に表示されるプロンプト、メッセージ、エラー、実行結果などのすべての文字列を書き出すテキストファイル名 'outfile' を指定することができます。既に存在するファイルを指定した場合、ファイルの内容は上書きされますのでご注意ください。多バイト文字は、Unicode (UTF-8) でエンコードされて記録されます。
    /CMD /CMD の後に任意のコマンド 'command_line...' を記述すると、接続が完了した後にそのコマンドが実行され、その後 vpncmd プログラムは終了します。/IN と共に指定することはできません (/IN と共に指定した場合は /IN は無視されます)。/CMD パラメータは他のすべての vpncmd のパラメータよりも後に指定してください。

     

    6.2.4 バッチ処理モード

    管理の自動化とバッチ処理の必要性

    「vpncmd」コマンドを起動すると、通常はコマンドを入力するためのプロンプトが表示され、そこにコマンドを入力することによって接続先の VPN Server / VPN Bridge などを操作します。また、VPN Client のエンドユーザーも、vpncmd を起動してコマンドを入力することによって VPN Client の制御を行うことができます。

    SoftEther VPN の運用方法によっては、これらの機能を自動化したい場合があります。たとえば、大量の社員の名前一覧を CSV ファイルで持っていて、各個人用のアカウントを、一括して仮想 HUB 内に作成したい場合などです。通常、これらの繰り返し作業を、GUI を使用して行うと大変な時間がかかってしまいます。このような場合は vpncmd の「バッチ処理」機能を使用して、事前に定義したいくつものコマンドを一気に実行させることができます。

    また、vpncmd を他のプログラムから呼び出して VPN Server の自動管理を行うこともできるようになっています。たとえば指定した時刻に、VPN Server の仮想 HUB をオフラインにしたり、定期的にその仮想 HUB に接続しているセッションの一覧のスナップショットを、テキストファイルに保存して記録しておいたりする場合は、vpncmd を呼び出すことによって行うことができます。

    単体のコマンドを vpncmd に指定して呼び出す方法

    「vpncmd」を起動して、接続対象のサービスに管理接続し、1 つのコマンドを呼び出した後、接続を切断するという簡単な操作を行う場合は、vpncmd 起動時の「/CMD」引数を使用します。

    vpncmd に /CMD 引数を指定すると、VPN Server / VPN Client / VPN Bridge への接続後、/CMD よりも後に記述されたコマンドを実行し、実行が完了すると直ちに終了します。たとえば、VPN Server の仮想 HUB "DEFAULT" に接続してユーザー "ABC" を作成するには、以下のように入力して vpncmd を起動してください。

     

    vpncmd /server サーバー名 /password:パスワード /adminhub:DEFAULT
              /cmd UserCreate ABC /GROUP:none /REALNAME:none /NOTE:none

    すると、下記のように自動的に /CMD で指定したコマンドが実行され、vpncmd は終了します。

    C:\>vpncmd /server localhost /adminhub:DEFAULT /cmd UserCreate ABC /GROUP:none
         /REALNAME:none /NOTE:none
    vpncmd コマンド - PacketiX VPN コマンドライン管理ユーティリティ
    PacketiX VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
    Version 2.10 Build 5070
    Compiled Tue Dec  6 14:18:20 2005 by yagi at ILC308
    Copyright (C) 2004-2005 SoftEther Corporation. All Rights Reserved.
    VPN Server "localhost" (ポート 8888) に接続しました。
    
    VPN Server 全体の管理権限があります。
    
    仮想 HUB "DEFAULT" を選択しました。
    VPN Server/DEFAULT>UserCreate ABC /GROUP:none /REALNAME:none /NOTE:none
    UserCreate コマンド - ユーザーの作成
    コマンドは正常に終了しました。
    C:\>
     

    複数のコマンドを vpncmd に指定して呼び出す方法

    上記の方法では、1 つのコマンドを呼び出すために、1 回ずつ vpncmd を起動しなければなりませんでした。このような方法では、たとえば 1,000 個のコマンドを同時に実行したい場合、1,000 回 vpncmd を起動して自動的に管理対象のサーバーに接続し、コマンドを実行したあと接続を切断して vpncmd を終了するといった、オーバーヘッドの高い処理が必要になり、時間が掛かるほか、CPU やネットワーク資源の無駄になります。

    そこで、あらかじめ同時に実行したい複数のコマンドを「テキストファイル」として記述しておき、vpncmd を起動する際に「/IN」引数として 、そのテキストファイルの「ファイル名」を指定することによって、そのテキストファイルに記述されているすべてのコマンドを自動的に実行 することができます。すべてのコマンドの実行が終了すると vpncmd は終了します。

    たとえば、以下のようなファイルを作成して、「batch.txt」というファイル名で保存します。なお、この例のように多バイト文字 (ひらがな・漢字など) を含むファイルの場合は、必ず「UTF-8」形式で保存してください。

    Hub DEFAULT
    UserCreate jiro /GROUP:none /REALNAME:"田中 次郎" /NOTE:none
    UserCreate yas /GROUP:none /REALNAME:"新庄 康" /NOTE:none
    UserCreate idai /GROUP:none /REALNAME:"上嶋 千春" /NOTE:none
    UserCreate yokote /GROUP:none /REALNAME:"横手 先生" /NOTE:none
    UserCreate ihihihi /GROUP:none /REALNAME:"金星人助教授" /NOTE:none
    UserCreate yuta /GROUP:none /REALNAME:"油田 副社長" /NOTE:none

    次に、以下のようにコマンドライン引数を付けて vpncmd を起動します。

    vpncmd /server サーバー名 /in:batch.txt

    すると、vpncmd が起動して、自動的にすべての行のコマンドを順番に実行した後、終了します。

    6.2.5 ログの保存

    「vpncmd」を起動する際のコマンドライン引数として、「/OUT」パラメータでファイル名を指定すると、vpncmd が表示するすべての出力結果がそのファイルに保存されます。これにより、vpncmd 上でコマンドを実行した結果を、外部ファイルに書き出すことができるため、vpncmd の結果を記録したり、その結果によって処理を行うような自動化プログラムを作成することもできます。

    6.2.6 vpncmd プロセスの戻り値

    「vpncmd」プロセスは、最後に実行したコマンド実行結果の「エラーコード」を親プロセスに返します。コマンドが正常に終了した場合は、「0」を返します。 

    6.2.7 文字コード

    Windows 版における文字コード

    Windows 版においては、vpncmd プログラムやその他の SoftEther VPN プログラムは、画面にメッセージや動作結果を表示したり、またユーザーからの入力を受け取ったりする際の「文字コード」として、プロセスが起動された段階での 、システムまたはユーザーが選択している「ロケール情報から取得した文字コード」を自動的に使用します。

    UNIX 版における文字コード

    Linux 版を含む UNIX 版の vpncmd プログラムやその他の SoftEther VPN プログラムは、画面にメッセージや動作結果を表示したり、またユーザーからの入力を受け取ったりする際の文字コードとして、プロセスが起動された段階での 「LANG 環境変数」の値から使用する文字コードを決定します。ソフトイーサ株式会社として動作を確認したものは、LANG 環境変数が以下のうち、いずれかに設定されている場合のみです。

    • ja_JP.eucJP
    • ja_JP.shift_jis
    • ja_JP.UTF-8

    なお、LANG 環境変数が設定されていなかったり、設定されていても正しく認識されない場合は、「EUC-JP」エンコードが使用されます。SoftEther VPN ソフトウェアを使用する際は、各プロセスを起動する前に LANG 環境変数が正しく設定されているかどうかを確認してください。

    6.2.8 Windows での vpncmd の呼び出し

    Windows では、SoftEther VPN ソフトウェアをインストールした直後は SoftEther VPN ソフトウェアをインストールしたディレクトリ (たとえば C:\Program Files\SoftEther VPN Server など) に、インストールされる vpncmd.exe プログラムを起動することによって「vpncmd」を起動してください。

    なお、一度「Administrators 権限」で vpncmd を起動すると、次回からコマンドプロンプトや [ファイル名を指定して実行] などから、「vpncmd」と入力するだけで、vpncmd を起動することが可能になります。

    UNIX 系オペレーティングシステムでは、「PATH 環境変数」を手動で設定するか、/usr/local/bin などのプログラムフォルダに、vpncmd および hamcore.se2 を設置することによって、同等の効果を得ることができます。

    6.2.9 vpncmd のみのインストール

    「vpncmd」は通常、SoftEther VPN Server / VPN Client / VPN Bridge をインストールしたコンピュータに、自動的にインストールされます。しかし、下記のファイルを他のコンピュータにコピーすることによって、別のコンピュータで 「vpncmd」のみを使用することが可能となります。なお、ソフトイーサ株式会社は、これらのファイルを手動でコピーするのではなく、vpncmd を使用したいコンピュータに対して、Windows の場合は VPN Bridge の「exe-only 版」を、UNIX の場合は「VPN Bridge の通常版」を展開することを推奨します。

    • vpncmd.exe 実行可能ファイル
      (UNIX 版にあたっては、vpncmd ファイル)
    • hamcore.se2 ファイル