startって使える

コマンドプロンプトでの話です。

>start .

.はドットです。今いるフォルダをexplorerが起動します。便利かも。

コマンドプロンプトを別に起動するのも便利。

単に、>start

call や cmdでは同じコマンドプロンプトを共有するが、startは別のコマンドプロンプトを開くのです。

自分がいる部屋のIPアドレスの一覧

ローカルエリアネットワーク(LAN)の話です。

部屋は物理的な意味で言っているのですが、ネットワークも一般的には部屋ごと1階、2階とかに分けています。管理上、都合がいいですから。

このネットワークを管理する単位は、ブロードキャスト/放送できる範囲です。IPアドレスの一覧とは、ブロードキャスト/放送の範囲の一覧でもあります。ネットワークが違うとブロードキャスト/放送が届きません。だって、ある部屋のPCが世界にブロードキャスト/放送できたらLANはパンクしますよね。

コマンドプロンプトでipconfigを実行して、以下のようになったらIPv4アドレスとサブネット マスクを探します。この2つでブロードキャストの範囲がわかります。サブネットマスクが255.255.255.0なので「.」を区切りとして、先頭から255が3つ続きます。ですから192.168.0がブロードキャストの範囲です。ですから、192.168.0.1から192.168.0.254までは同じ部屋/ブロードキャストの範囲です。

プリンタのIPアドレスがわからないという時、パソコンは利用者に聞いて回ればわかりますがプリンタのIPアドレスはテプラか何かが貼ってあるといいのですが(プリンタにIPアドレスのシールは必要ですよね)。同じ部屋(同じネットワーク部)だとプリンタに付属のソフトで設定できるんですけど、あえて使わせないということもあるかもしれません。

また、ネットワークの設定で「IPアドレスを自動的に取得する(O)」がある、これはルータからIPアドレスもらうのだが、特定のPCには特定のIPアドレスを設定したい場合はMACアドレス/ネットワークカードの物理アドレスがいる。ルータでDHCPの設定にMACアドレスを電子データで取得できるってのもいいかな?。PCのMACアドレスの下3桁程度を確認して設定ができる。

ところで、

Linuxならping で「ブロードキャストアドレス/大抵は最後が.255」にpingの応答が確認できる。自分のパソコンからブロードキャストできる範囲の全体にpingができるのです。

1行のコマンドでできるんです。

例えば、このコンピュータのIPアドレスが192.168.11.10、ネットマスク255.255.255.0(192.168.11.0/4とも書ける。普通.で区切る)とするとマスクしてない最後「.0」の部分以外の192.168.11が一致がする範囲がブロードキャストできる範囲。「.0」を「.255」にして

ping 192.168.11.255

これで全部のIPアドレスがわかるんですね。255は全部のアドレス。192.168.11が先頭にあって、1~254のすべてが255(192.168.11.255)という意味。0はネットワークの意味(192.168.11.0)。ですから192.168.11.0と192.168.11.255はPCのネットワークに割り当てることはできません。

話は、それました。

実は、Windowsでも255ができるます。「要求がタイムアウトしました。」となっていてもOK。

ポイントはarpコマンドも使うこと。

ping 192.168.11.255としてからarpを使うと自分と同じネットワークにいるIPアドレスの一覧を得ることができる。セキュリティ上pingの応答をしない端末に対してもarpコマンドなら存在を確認できる。

これができて何がうれしいのかというと。

いちいちping 192.168.11.2の2を順に大きくして

ping 92.168.11.3
ping 92.168.11.4
ping 92.168.11.5
・・・
ping 92.168.11.254

と入力しなくていい。そして、pingの返答の間に待たなくていい。致命的なのがpingにわざと応答しない設定にしている端末(ノード/node)。その端末に対してはお手上げですね。解決策がArpコマンドです。pingに応答しない設定でもIPアドレスがわかってしまう。

一覧が取れると、プリンターのIPアドレスや他のパソコンのIPアドレスがわかる。もし新たにIPアドレスの設定をする時に、あるIPアドレスを割り振っていいかどうかわからないのでIPアドレスの一覧があるとうれしいですね。

さて、

自分のIPアドレスはipconfigでわかります。

IPアドレスは192.168.11.10

サブネットマスクが255.255.255.0

なので192.168.11がネットワーク部、10がホスト部ということ

192.168.11.0をネットワークアドレスといい、192.168.11.255が192.168.11.のネットワークのブロードキャストアドレスです。

ブロードキャストとは放送でpingなら一斉に自分のネットワークにいるパソコンやスマホにpingのパケットを送る。同時に送る。返答するかどうかは相手しだい。

でもMACアドレス/物理アドレスは手に入る。arpコマンドで一覧が見れる。

scでWindowsサービス名一覧

サービスの一覧。これWIN32だけらしい。答えは、最後。

C:\WINDOWS\system32>sc query | findstr SERVICE_NAME

だめなんは、以下でわかります。

C:\WINDOWS\system32>sc query | findstr 32
sc query type= service – Win32 サービスのみ列挙します

じゃ。

C:\WINDOWS\system32>sc query |findstr 64

これは無い。わー使えない!

起動していればtasklistコマンドでサービス名がわかる。

C:\WINDOWS\system32>tasklist /svc |findstr ssh
sshd.exe 10788 sshd

止まっているサービスの名前もわかればnetでもscでも起動、終了のどちらもできるだけど!!

C:\WINDOWS\system32>sc query |findstr ssd

C:\WINDOWS\system32>

と無いわ。

C:\WINDOWS\system32>net start sshd
OpenSSH SSH Server サービスを開始します.
OpenSSH SSH Server サービスは正常に開始されました。

C:\WINDOWS\system32>net stop sshd
OpenSSH SSH Server サービスは正常に停止されました。

とあるよね。これ私のノートパソコンの話しなんで、

spoolerはどのパソコンでもあるのでやってみて。

コマンドプロンプトでする。netの方がわかりやすいのでここではnetコマンドを使ってます。

C:\Windows\System32>net stop spooler
Print Spooler サービスを停止中です.
Print Spooler サービスは正常に停止されました。

C:\Windows\System32>net start spooler
Print Spooler サービスを開始します.
Print Spooler サービスは正常に開始されました。

ヘルプは、コマンドプロンプトでscを実行する。

C:\Windows\System32>sc
説明:
        SC はサービス コントロール マネージャーやサービスと通信するために使用
        するコマンド ライン プログラムです。
使用法:
        sc <サーバー> [コマンド] [サービス名] <オプション 1> <オプション 2>...


        オプションの <サーバー> は "\\サーバー名" の形式です。
        「sc [コマンド]」と入力するとコマンドの詳細なヘルプが表示されます。
        コマンド一覧:
          query-----------サービスの状態を照会したりサービスの種類ごと
                          に状態を列挙したりします。
          queryex---------拡張されたサービスの状態を照会したりサービス
                          の種類ごとに状態を列挙したりします。
          start-----------サービスを開始します。
          pause-----------サービスに PAUSE 制御要求を送信します。
          interrogate-----サービスに INTERROGATE 制御要求を送信します。
          continue--------サービスに CONTINUE 制御要求を送信します。
          stop------------サービスに STOP 要求を送信します。
          config----------サービスの構成を変更します (恒久的)。
          description-----サービスの説明を変更します。
          failure---------エラー発生時のサービスの動作を変更します。
          failureflag-----サービスの障害動作フラグを変更します。
          sidtype---------サービスのサービス SID の種類を変更します。
          privs-----------サービスの必要な特権を変更します。
          managedaccount--サービス アカウントのパスワードを LSA で管理された
                          パスワードとマークするようにサービスを変更します。
          qc--------------サービスの構成情報を照会します。
          qdescription----サービスの説明を照会します。
          qfailure--------エラー発生時のサービスの動作を照会します。
          qfailureflag----サービスの障害動作フラグを照会します。
          qsidtype--------サービスのサービス SID の種類を照会します。
          qprivs----------サービスの必要な特権を照会します。
          qtriggerinfo----サービスのトリガー パラメーターを照会します。
          qpreferrednode--サービスの優先 NUMA ノードを照会します。
          qmanagedaccount-パスワードが LSA で管理されたアカウントを
                         サービスで使用するかどうかを照会します。
          qprotection-----サービスのプロセス保護レベルを照会します。
          quserservice----ユーザー サービス テンプレートのローカル インスタンスを照会します。
          delete----------レジストリからサービスを削除します。
          create----------サービスを作成します (レジストリに追加します)。
          control---------サービスに CONTROL コードを送信します。
          sdshow----------サービスのセキュリティ記述子を表示します。
          sdset-----------サービスのセキュリティ記述子を設定します。
          showsid---------任意の名前に対応するサービス SID 文字列を表示します。
          triggerinfo-----サービスのトリガー パラメーターを構成します。
          preferrednode---サービスの優先 NUMA ノードを設定します。
          GetDisplayName--サービスの DisplayName を取得します。
          GetKeyName------サービスの ServiceKeyName を取得します。
          EnumDepend------サービスの依存関係を列挙します。

        次のコマンドはサービス名を指定しません:
        sc <サーバー> <コマンド> <オプション>
          boot------------(ok | bad) 最後に行われたブートを前回正常起動時
                          の構成として保存するかどうかを示します。
          Lock------------サービス データベースをロックします。
          QueryLock-------SCManager データベースの LockStatus を照会します。
例:
        sc start MyService


QUERY と QUERYEX のオプション:
        クエリ コマンドにサービス名が続く場合、サービスの状態が戻されます。
        この場合、それ以上のオプションは適用されません。クエリ コマンドに
        オプションがない場合やまたは以下に一覧に表示されているオプションが
        続く場合は、サービスが列挙されます。
    type=    列挙するサービスの種類 (driver、service、user service、all)
             (既定 = service)
    state=   列挙するサービスの状態 (inactive、all)
             (既定 = active)
    bufsize= 列挙バッファーのサイズ (バイト)
             (既定 = 4096)
    ri=      列挙の開始を指定するための再開インデックス番号
             (既定 = 0)
    group=   列挙するサービス グループ
             (既定 = all groups)

構文の例
sc query                - アクティブなサービス ドライバーの状態を列挙します
sc query eventlog      - イベントログ サービスの状態を表示します
sc queryex eventlog    - イベントログ サービスの拡張状態を表示します
sc query type= driver   - アクティブなドライバーのみ列挙します
sc query type= service  - Win32 サービスのみ列挙します       <<<<<<わお
sc query state= all     - サービスとドライバーをすべて列挙します  <<<<これ!!
sc query bufsize= 50    - 50 バイトのバッファーで列挙します
sc query ri= 14         - 再開インデックスを = 14 にして列挙します
sc queryex group= ""    - グループにないアクティブなサービスを列挙します
sc query type= interact - 対話型サービスをすべて列挙します
sc query type= driver group= NDIS     - NDIS ドライバーをすべて列挙します


C:\Windows\System32>

答えは

sc query state=all | findstr SERVICE_NAME

state=allなんです。

C:\WINDOWS\system32>sc query state=all|findstr ssh
SERVICE_NAME: ssh-agent
SERVICE_NAME: sshd

見つけてますね。OK

sc query state=all | findstr 探したいサービス名の一部

ssh 「Secure Shell」

セキュア シェル。Windowsで言えばShellシェルとはcmd.exeやエクスプローラーかな。

暗号化したコマンド。暗号化したトンネル(パイプ)を作ったり、scpでコピーもできるし多機能です。

コマンドで使うのでキーボード大好きな人向き。

もともと、マウスで操作するのは自動化や繰り返し処理には向かない?

私はキーボード操作が好きです。

さて、

sshの前にtelnetを使っているとあーsshねとなると思いますが。Windowsでは使うことないでしょ。もともとsshはUNIXで一般的につかわれています。

ここでは、Windows10で使えるということでやってみます。

sshクライアントとsshdサーバーの2つともWindows10では設定するだけですぐに使える。

コマンドプロンプトでssh localhostまたはssh 127.0.0.1で自分のサーバーに接続する。

taskkillコマンド 特定のアプリを強制終了

sshで接続中にサーバー側でsshdサーバーを終了することはできないが、接続しているPuTTyを終了すると、途中まで止まっていたsshdサーバーは終了手続きを続けて、終了できる。

さて、

会社と家のノートパソコンが443のポートで長時間接続中というのはいけません。時たま、PuTTyの終了を忘れていても接続を切る。

その方法は、sshdサーバーはそのまま、Puttyを終了させます。

Windows10のtaskkillコマンドは、/imを付けて実行するとプロセスのソフト名、実行ファイル名を指定できる。

sshで接続しているクライアントソフトPuTTyのプロセスを終了させるコマンド。/fは強制という意味。

taskkill /im putty.exe /f

これをメニューの「Windows管理ツール」の「タスク スケジューラ」に登録しておきます。日に何度かtaskkillを実行させる。

コマンドプロンプトが真っ黒なまま

うんともすんとも、文字も出ない。

c:\windows\system32\cmd.exeを直接実行する。

C:\Users\ログインユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\System Tools

の「コマンドプロンプト」のショートカットも作り直す。

おかしくなったのは、Bashを入れてから。今は、WindowsにBashがつかえるんですね。

そして、コマンドプロンプトでコピー&ペースのコピーができない現象が

コマンドプロンプトのプロパティで「簡易編集モード」のチェックが勝手に外れる。

ので、「レガシ コンソールを使用する(再起動が必要で、すべてのコンソールに影響します)」をチェック。このあたりから真っ黒現象。

Bashを外し、使ってないPowerShellも外しても真っ黒現象。

で、System32のcmd.exeをクリックで確認。あっさり動く。というながれです。

会社のフィルタでネットが使えん

という方に、家のパソコンに会社からsshで接続して自由を獲得する。

こちらを参考にしました。ssh接続の「ダイナミックフォワード」という機能を使う。

sshっていうのはコマンドで別のコンピュータとコマンドのやり取りができる。しかも、暗号化してます。接続相手はsshサーバーです。相手は家にあるノートパソコンです。接続しようとしている(クライアント)は会社のパソコンです。会社からはPuTTyを使う。

会社のPuTTy⇔家のパソコンのsshサーバー

この間に関所があります。会社のプロキシーサーバーと家の(ブロードバンド)ルータです。

会社のPuTTy⇔会社のプロキシーサーバー⇔家のルータ⇔家のパソコンのsshサーバー

Putty、家のルータの説明を主にします。

我社はプロキシの設定もあるのでPuTTyを使いました。会社にプロキシーサーバーがあるかどうかは、会社のパソコンのIEの設定でわかります。プロキシーが無ければ、Puttyを使わなくてもsshコマンド(有効にすればWindows10でも使える)でもOKです。

PuTTyの設定はややこしいです。でも設定がややこしいだけで使うのは簡単。

Tunnelsの設定

家のノートパソコン経由でインターネットに接続する設定。ダイナミックフォワード

ということで、会社のパソコンのIE(Microsoft Edgeは不明)のプロキシーの設定をSoketsにして、使用するプロキシーのアドレスを127.0.0.1かlocalhost、ポート番号は10000にすると会社にいながら家のノートパソコンを経由してインターネットに接続できる。

ブラウザでFireFoxは、単独でSocksの設定ができる。単に調べ物だけならFireFoxを使って他は社内のサーバーを使う。

話はそれました。PuTTyの設定の続き。

Sessionの設定。443はhttpsプロトコルが使うポート。このポートだと会社のフィルターも止めないでしょう。「家のグローバルIPアドレス」は、こちらでわかります。「こちら」は家でやってメモります。

このSession/セッション/接続は、会社のルータを監視すると見えます。https443番は一般的で怪しまれることはありませんが、これが何時間も接続していると怪しまれます。適当に切断することをオススメします。

Proxyの設定。HTTPをチェック

会社のプロキシサーバー名/IPアドレスは、IEの設定を参考にする

「Open」ボタンを押すとログインでパスワードを要求される。Windowsのログインと同じパスワードです。

以下がログイン完了。会社のパソコンからこのノートパソコンを通してインターネットに接続できる。次図のコマンドプロンプトは、家のノートパソコンのコマンドプロンプトです。

家のパソコンはWindows10でWindowsのsshdサーバーを使います。この設定はWindowsにsshdサーバーを追加して、ただ動かすだけ。ここで設定方法と使い方を簡単に説明してます。

ややこしいのは、家のルータ(バッファローAir-Station WHR-1166DHP2)の設定でしょうね。意味を説明するがややこしい。設定は簡単。考え方がややこしい。

アパート、マンションの方は無理です。また、一戸建ての方でも例えばSoftbankのレンタルルータなどでもきっと「ポート変換」ぐらいはあるはずです。

我が家は一戸建て、バッファローのルータを光回線の終端装置(ONU)に付けてるので自由です。

家のノートパソコンのIPアドレスは、〜.11.10です。これを固定しておかないといけない。ので手動割当です。

世界からパケットがお家のルータに来るのですが、ポート番号443の港をたたくパケットはノートパソコン〜.11.10のポート22にそのままえ渡す設定です。

なんで443なんか?PuTTyの「Sessionの設定」を見て下さい。

以上、ややこしい設定2つです。

家のグローバルIPアドレスはこちらでわかる。家でします。ついでに、会社の方も知っているといいことがあります。Windows10のファイアウォールの設定で特定のIPしか接続できないようにするのです。sshdサーバーに対してスコープをかけるとIPのパケットを見て送信元が会社のグローバルかどうかをチェックします。次図。

これで、家のいつのポート(港)が空いていると世界から侵入を試みるでしょうが、受け取る自宅のノートパソコンのsshdサーバーが応答するかどうかは、送信元のIPアドレスで判断してくれます。IPパケットのヘッダを見た時点で会社のグローバルIPアドレスでないとパケットが捨てられます。データな中身以前に送信元のIPアドレスで無視します。

だから、ユーザー名とパスワードすら試すことはできません。