自分がいる部屋の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コマンドで一覧が見れる。

拘束 マルチボディとアセンブリで

スケッチやフィーチャーの作成で他のスケッチやフィーチャー、外部のスケッチやフィーチャーを参照して拘束をすることがある。

マルチボディでの拘束例

アセンブリでの外部参照

完全定義 (ー)スケッチ1でいいじゃん

(-)スケッチ1の(-)は未完全定義という意味です。以下の3つでスケッチは完全定義になる。

  1. 幾何拘束
  2. 寸法拘束
  3. 位置拘束

三次元CAD では、1の幾何拘束はするが2,3まであると不自由になるので必要になってからでいい。

完全定義が必要と言われるのは、未定義=製作できないからですよね。本によると「完全定義」命みたいに書いてるが、設計段階だといろいろいじるから拘束が多いといけません。せいぜい幾何拘束(形)だけですよね。

マージ?幾何拘束とは違います

四角を描くと4本の線の端がマージすることで四角形の形になっている。線の端と線の端は幾何拘束ではなく、マージで拘束?している。マージって結合という意味なんで拘束じゃないわな。

マージは、エンティティトリムのパワートリムで外せます。

幾何拘束の削除は使っているとわかりますが、マージの解除(削除)方法はわからなかったんで動画にしました。

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 探したいサービス名の一部

SikuliXのプログラム

バッファローのブロードバンドルータの設定を例にします。

Yamahaのルータはコマンドが使えるけど、安いルータはブラウザで設定するしかない。もしかして、安いルータもLinuxなので裏技ありますかね?

ブラウザの操作を自動化したくて、SikuliXを使った。

キーボード操作は、typeを使う。

  • ファイル名を指定して実行は、Windowsキー+rはtype(“”,Key.WIN)
  • 貼り付けは、paste(“chrome”)。結果的にchromeを入力と同等。
  • 改行は、改行コードを入れる。type(“\n”)
  • Chromeのアドレスバーは、type(“l”,Key.CTRL)。ここを参照。
  • passという文字列を入力、type(“pass”)

ある画像があるかどうか待つ、exists(画像,待つ秒数)

ある画像をクリックする、click(画像)

秒数待つ、wait(秒数)

if 条件文:
TAB文字 コマンド
else:
TAB文字 コマンド
空白文字が左に無いとIf文を抜けることになる。

Regionはある範囲の変数として登録できる。ここではr1変数

withを使って範囲内の処理にする

with 範囲変数:
TABキー コマンド

か以下のように使う。

もし、riのレンジ(範囲)にぺけ✕マークが無かったらエラーになる。その場合は、

if ri.exists(✕画像)を使う。画像があるかないかで実行を分岐します。これ便利。エラー防止できるね。待ち時間を追加もできる。ri.exists(画像,秒数)。当然、ディスクトップ全体exists(画像,秒数)も使えます。

コピペすると画像部分はファイル名になります。

type("r", Key.WIN)
paste("chrome")
type("\n")
wait(1)
type("l",Key.CTRL)
paste("192.168.11.1")
type("\n")

exists("1588775045755.png",8)
click("1588775045755.png")
type("pass")
type("\n")
exists("1588776243359.png",15)
click("1588776243359.png")
wait(8)
exists("1588776486229.png",3)
click("1588776486229.png")
exists("1588776523376.png",2)
click("1588776523376.png")
wait(2)
if exists("1588776582583.png",2):
    click("1588776582583.png")
else:
    click("1588776773718.png")

wait(11)
click("1588776816413.png")

r1=Region(1364,0,236,43)
r1.click("1588776847092.png")


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で自分のサーバーに接続する。