- 投稿日:2020-05-26T23:41:13+09:00
[macOS,CentOS7]pingでIPアドレスを総当たりするシェルを作成する
概要
本書では自身PCのネットワーク上に存在するIPアドレスを特定するため、pingコマンドを利用してIPアドレスを総当たりするシェルスクリプトを作成します。この記事は筆者が執筆しました「[Windows10]pingでIPアドレスを総当たりするバッチを作成する」の動作をmacOS,CentOS7用にシェルクリプトを作成しました。
動作の流れ
- IPアドレス(24bit(xxx.xxx.xxx)まで)を入力する。
- 正しくIPアドレスが入力されているか確認する。
- xxx.xxx.xxx.0 から xxx.xxx.xxx.255 までpingを打つ。
- pingでヒットしたIPアドレスを表示する。(ARPテーブルを表示する)
シェルスクリプトの内容
macOS
#!/bin/sh << COMMENTOUT ping_brute_force(macOS) Copyright (c) 2020 yuichi1992_west This software is released under the MIT License. http://opensource.org/licenses/mit-license.php COMMENTOUT # Regular expression variables match_ip='[0-9][0-9][0-9][.][0-9][0-9][0-9][.][0-9][0-9][0-9]' # enter ip address. echo "Enter the ip address up to 24bit. ( Example: 192.168.100 )" echo I"mportant!: If the target bit is 2 digits or less, enter 0 at the beginning. ( Example: 172.016.002 )" echo -n "After entering, press Enter. " read ping_brute_force # Regular expression judgment processing if [[ $ping_brute_force =~ $match_ip ]] ; then echo "" echo "The ip range is correct. Ping all IP addresses." echo "" echo "The IP address is brute-forced with the entered settings." for ((i=0;i<256;i++)); do ping -c 1 -W 1 "${ping_brute_force}.${i}" done # Display ARP table echo "Display ARP table" arp -a read -p "Press [Enter] key to resume." else echo "" echo "Important!" echo "Check the input format again and execute the bat file again. " echo "Especially when the target bit is 2 digits or less, be sure to add 0 at the beginning. " echo "Example: 172.016.005" read -p "Press [Enter] key to resume." fi exit 0CentOS7
#!/bin/sh << COMMENTOUT ping_brute_force(CentOS7) Copyright (c) 2020 yuichi1992_west This software is released under the MIT License. http://opensource.org/licenses/mit-license.php COMMENTOUT # Regular expression variables match_ip='[0-9][0-9][0-9][.][0-9][0-9][0-9][.][0-9][0-9][0-9]' # enter ip address. echo "Enter the ip address up to 24bit. ( Example: 192.168.100 )" echo I"mportant!: If the target bit is 2 digits or less, enter 0 at the beginning. ( Example: 172.016.002 )" echo -n "After entering, press Enter. " read ping_brute_force # Regular expression judgment processing if [[ $ping_brute_force =~ $match_ip ]] ; then echo "" echo "The ip range is correct. Ping all IP addresses." echo "" echo "The IP address is brute-forced with the entered settings." for ((i=0;i<256;i++)); do ping -c 1 -w 1 "${ping_brute_force}.${i}" done # Display ARP table echo "Display ARP table" ip n read -p "Press [Enter] key to resume." else echo "" echo "Important!" echo "Check the input format again and execute the bat file again. " echo "Especially when the target bit is 2 digits or less, be sure to add 0 at the beginning. " echo "Example: 172.016.005" read -p "Press [Enter] key to resume." fi exit 0動作結果(macOSの場合)
成功例
% bash ping_brute_force.sh Enter the ip address up to 24bit. ( Example: 192.168.100 ) Important!: If the target bit is 2 digits or less, enter 0 at the beginning. ( Example: 172.016.002 ) After entering, press Enter. 192.168.000 The ip range is correct. Ping all IP addresses. The IP address is brute-forced with the entered settings. PING 192.168.000.0 (192.168.0.0): 56 data bytes --- 192.168.000.0 ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss, 1 packets out of wait time round-trip min/avg/max/stddev = 15.614/15.614/15.614/0.000 ms (省略) PING 192.168.000.126 (192.168.0.126): 56 data bytes --- 192.168.000.126 ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss, 1 packets out of wait time round-trip min/avg/max/stddev = 10.611/10.611/10.611/0.000 ms (省略) PING 192.168.000.254 (192.168.0.254): 56 data bytes --- 192.168.000.254 ping statistics --- 1 packets transmitted, 0 packets received, 100.0% packet loss PING 192.168.000.255 (192.168.0.255): 56 data bytes 64 bytes from 192.168.0.230: icmp_seq=0 ttl=64 time=0.087 ms --- 192.168.000.255 ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.087/0.087/0.087/0.000 ms Display ARP table ? (192.168.0.1) at 74:da:88:a0:e8:19 on en0 ifscope [ethernet] ? (192.168.0.111) at (incomplete) on en0 ifscope [ethernet] ? (192.168.0.112) at (incomplete) on en0 ifscope [ethernet] ? (192.168.0.126) at 54:60:9:70:ba:4c on en0 ifscope [ethernet] (省略) ? (192.168.0.254) at (incomplete) on en0 ifscope [ethernet] ? (192.168.0.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet] Press [Enter] key to resume.失敗例
% bash ping_brute_force.sh Enter the ip address up to 24bit. ( Example: 192.168.100 ) Important!: If the target bit is 2 digits or less, enter 0 at the beginning. ( Example: 172.016.002 ) After entering, press Enter. 1 Important! Check the input format again and execute the bat file again. Especially when the target bit is 2 digits or less, be sure to add 0 at the beginning. Example: 172.016.005 Press [Enter] key to resume.動作について
- IPアドレス(24bit)の正規表現を変数に入れる。
match_ip='[0-9][0-9][0-9][.][0-9][0-9][0-9][.][0-9][0-9][0-9]'
- 任意のIPアドレス(24bit)をユーザーに入力してもらう。
read ping_brute_force
- 入力してもらった値(ping_brute_force変数)と正規表現(match_ip変数)を比較する。
if [[ $ping_brute_force =~ $match_ip ]] ;
- 正しいIPアドレス(24bit)が入力されている場合は、xxx.xxx.xxx.0からxxx.xxx.xxx.255までpingを打つ。
for ((i=0;i<256;i++)); do ping -c 1 -W 1 "${ping_brute_force}.${i}" done
- ARPテープルを表示する。
arp -a最後に
macOS,CentOS用のpingでIPアドレスを総当たりするシェルスクリプトを作成しました。これによって、自身PCのネットワークに存在しているyIPアドレスを特定することができると思います。このシェルスクリプトを利用することで、使用されていないIPアドレスを確認すること、既に使用されているIPアドレスを特定することに役立つと思います。
- 投稿日:2020-05-26T21:02:35+09:00
Macのdockerが遅いストレスから解放されよう
Mackのdocker遅い問題
Macで開発している時、主にRailsなのですがdockerを使うと遅くなるのが嫌でずっと避けてましたが、とあるプロジェクトでBFF構成にし開発環境とデプロイ環境をECS化したりとでdocker化の流れに抗えない状況になりました。
ただ、やはり遅い。
dockerが不慣れなこともありますが、Macのdockerなかなか遅い。
そしてMacが遅い件を調べてみてもみなさん困られるのが伺えます。
そんな中で対策としてよく見かけるのが
- docker-sync
- vagrantで別立て
の2つでした。
どちらが最適なのかな?と思い悩んでると、
ありました。dockerのドキュメントにまさにこの件に対しての内容が。
https://docs.docker.com/docker-for-mac/osxfs-caching/
ボリュームマウントのチューニング
端的にまとめるとv17.04から
cached
とdelegated
というオプションが追加され、書き込み読み込みの一貫性を担保しない(※)代わりにパフォーマンスが向上されるものです。※コンテナ側で発生した変更がホスト側に書き込みされるまで遅延を許容する。
即時性を求められたり大規模な処理を組むこともなく、開発環境だけで使うことから現状大きな支障はないと思いこちらのオプションを利用することにしました。
導入の仕方
- volumesの指定の最後に
:delegated
をつけていつも通りdocker-compose up
を実行例services: app: volumes: - .:/project/sample_app:delegatedtips
linuxやwindowsユーザーの方と一緒に開発する場合は必要ないかと思うので、そんな時は通常使う
docker-compose.yml
に基本的な設定そのままにdocker-compose-local.yml
のように、別ファイル名のymlを用意します。そこに例のように
services:
、サービス名:
、vpluems:
、マウント先:に:delegateオプション
を追加したものをのみを残しdocker-compose -f docker-compose.yml -f docker-compose-local.yml upとオプション指定すればvolumesの指定のみ上書かれるのでMacユーザーの方はこちらを利用したら住み分けできて便利です。
※docker-compose.ymlにversion指定されていたら、versionの指定は合わせます。
改善の結果
ただのindexのレコード取得でも数秒、初回アクセスで10秒オーバーするケースがあったものが普通にサクサクと動くようになりました。
プロジェクトの内容や要件に合わせてですが、遅すぎてストレスが激しくdocker嫌いになる前に是非試してみてください。
まず困ったら公式ドキュメントをしっかり読むことの大事さを改めて実感する一件でした。
- 投稿日:2020-05-26T18:16:42+09:00
右Commandキーで英数・かなをトグルしたかった
HHKBのUS配列を購入したので Karabiner-Elements で右Commandキーの機能を英数・かなトグルにしようと調べた結果、以下の設定を発見。
For Japanese (日本語環境向けの設定) (rev 5)
この中の "コマンドキー(右のみ)を単体で押したときに、英数・かなをトグルで切り替える。 (rev 2)" でトグルできる事を確認。
問題
ただし、この設定では以下のような問題があった。
- 「単体で押した時」という条件がある
- キーアップのタイミングで英数・かなをトグルする
- キーコンビネーション時に右Commandキーが復活する
これらの制約のため、押し方次第でトグルしなかったり、半角スペースを打とうとした時にAlfredが起動してしまっていた。
解決
Karabiner-Elementsの設定項目をまとめました に設定方法があった。
これを参考にしながら前述の設定を以下のようにアレンジ。right_command_eisuu_kana_toggle.json{ "title": "右コマンドキーで英数・かなをトグル", "rules": [ { "description": "右コマンドキーを押したときに、英数・かなをトグルで切り替える。", "manipulators": [ { "type": "basic", "conditions": [ { "input_sources": [ { "language": "ja" } ], "type": "input_source_if" } ], "from": { "key_code": "right_command", "modifiers": { "optional": [ "any" ] } }, "to": [ { "key_code": "japanese_eisuu" } ] }, { "type": "basic", "conditions": [ { "input_sources": [ { "language": "en" } ], "type": "input_source_if" } ], "from": { "key_code": "right_command", "modifiers": { "optional": [ "any" ] } }, "to": [ { "key_code": "japanese_kana" } ] } ] } ] }変更点
parameters, to_if_held_down, to_if_alone は不要なので削除
to_if_held_down は parameters の
basic.to_if_held_down_threshold_milliseconds
で指定されたミリ秒後に発火するキーの指定。
ここはright_command
と指定されている。
to_if_held_down の機能は利用しないため、今回はどちらの指定も不要。to_if_alone はキーを単体で押下した場合に発火するキーの指定。今回は単体・コンビネーション関係無くトグルさせたいため不要。
to に本来指定したいキーを設定
right_command
と指定されているため、それぞれjapanese_eisuu
japanese_kana
を指定。変更しなかった点
modifiers
modifiers を取ると、コンビネーションキーと組み合わせた時に右Commandキーが復活してしまう。
解決したようなしてないような
キーアップではなくキーダウンでトグルされるようになり、トグル漏れが起きる回数が減ったため概ね想定通りに動くようになった。(Alfredも顔を出してこなくなったし。)
しかし、コンビネーションキーと組み合わせるとうまくトグルしない事を確認。
もしかするとコンビネーションキーが押されているとコンディションをうまく判断してくれない?右Alt+右Command同時押し二回、右Altを押しながら右Commandを数回、右Commandのみを数回押した場合の結果。
- 投稿日:2020-05-26T14:32:54+09:00
macOSのVSCodeでターミナルを開くときにtmuxが起動してしまう件
環境
- ProductName: Mac OS X Catalina 10.15.4
- Visual Studio Code 1.45.1
VSCodeのターミナルとtmuxは相性が悪い
私はzshが起動する際にtmuxが自動起動するように設定していますが、VSCodeのターミナル側でも同じようにtmuxが立ち上がってしまいます。
何がいけないかというとtmuxのコマンドが正常に動作しないことと、copymodeに入ってもコピペがうまくいかないことなどが挙げられます。解決法
そこでVSCodeのターミナルで起動した際にはtmuxを自動起動しないように~/.zshrcに記述しました。
以下のコードです。[[ -z "$TMUX" && ! -z "$PS1" && $TERM_PROGRAM != "vscode" ]] && tmux
$TERM_PROGRAM
には現在使用しているターミナルアプリの名称が入ります。
なのでvscode
で開いていた場合にはtmuxが起動しないように記述しています。参考サイト
- 投稿日:2020-05-26T02:50:02+09:00
MacでLogisimを使う
Logisim
Logisimとは論理回路設計用アプリケーションです。
Logisimのダウンロード
こちらのURLのDownloadボタンからダウンロードすることができます。
ダウンロードしたtarファイルを Ctrl + Click から開きインストールします。
brewのインストール
brewを既にインストールしてる方は飛ばしてください。
$ xcode-select --install$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"brew caskのインストール
$ brew install cask参考記事
MacにHomebrewを導入する方法
https://qiita.com/balius_1064/items/ac7dff5ef10eaf69996fJavaのインストール
Logisimを動作させるためjava6をインストールします。
Macにjavaが既にインストールされているか確認
$ /usr/libexec/java_home -Vjava6のインストール
brewを使ってインストールします。
$ brew tap homebrew/cask-versions $ brew cask install java6インストールされているか確認
$ /usr/libexec/java_home -VLogisimを開く
LogisimもCtrlを押しながらクリックして開きます。
最初は開くときに警告?的なのがでますが無視して開いて大丈夫です。参考記事
Homebrewでjava6をインストールする方法
https://qiita.com/ponsuke0531/items/9be8dee67a91c6c78d4f