小ネタプログラミング

LANに接続している機器のIPv4アドレスを列挙する(ping絨毯爆撃) Windows無情編

続きというか、以前はUnix環境での話だったので、今回はWindowsでpingで絨毯爆撃してLANに接続している機器のIPアドレスを列挙してみたい。eel3.hatenablog.comまずはシンプルに、バッチファイルで逐次実行する方法。 @echo off setlocal set ADDRBASE=192.0…

LANに接続している機器のIPv4アドレスを列挙する(ping絨毯爆撃)

たまにLANに接続している機器のIPアドレスを知りたい時がある。PCやゲーム機あたりなら本体の機能でIPアドレスを確認すれば済む。しかし相手がホームゲートウェイ/ブロードバンドルータや無線LANアクセスポイントやUSBメディアサーバで、ハードウェア本体に…

PINコード(数字のみ)を生成する

暗証番号やPINコードに使えるような、指定された桁数のランダムな整数値を生成したいのである。英数記号を用いたパスワード文字列の自動生成については知見があるのだが、「数字のみ」という条件が付いた途端に、「あれ? そういえば、どう生成すればよいの…

改行コードを問わずにテキストファイル中の連続する空白行を1行に縮めて上書きしたい

注文の多いタイトルである。 テキストファイル中の連続する空白行を1行に縮めたい。 縮めた結果を元ファイルに上書きしたい。元ファイルのバックアップは残さなくてよい。 CR、LF、CRLFのいずれの改行コードのファイルでも使えるようにしたい。 出力結果では…

macOS上で削除できないファイルのロックを解除する(ターミナルで)

WindowsとmacOSを本格的に併用していた時期に気づいたのだが、Windowsで「読み取り専用」に設定したファイルは、macOSではロックされたファイルとして認識されるようだ。明示的にロックを解除しない限り、macOSのFinderでは削除できない。Windowsでは誤って…

シェルスクリプトでJavaScript文字列リテラル用のエスケープ

「JavaScript文字列リテラル用のエスケープ」という表現は微妙だけど、要はサーバサイドでJavaScriptを動的生成する時に、文字列リテラルとして任意のパラメータを出力したい場合のエスケープ処理。先日(というか先月)書いたHTMLエスケープ用のシェルスク…

シェルスクリプトでHTMLエスケープ

PHPやPerlでのHTMLエスケープの話はよく目にするけど、そういえばシェルスクリプトでは見かけないなあ、なんて思った次第でございます。動的Webコンテンツの先駆けであるCGIの普及期でさえ言語としてPerlが大々的に使われていたわけで、そもそもサーバサイド…

リンク切れしたシンボリックリンクを探す

id:eel3:20121112:1352651058 でシンボリックリンクを張りなおすMakefileを書いたのだが、デッドリンク(リンク切れしたシンボリックリンク)がそのまま残ってしまう問題があった。この問題に対処するために、デッドリンクを探す方法を――『覚えて便利 います…

diruseの出力結果をCSV形式に加工する

HDDをあさったら、古いプロトタイプ・コードが見つかった。ちょっと晒してみる。今は不明だが、かつてWindowsサーバの管理用にdiruseというコマンドがあった。Unixのduのように指定したフォルダのディスク使用量を表示するツールで、その昔はWindows Server…

gawkやmawkで1byte/1文字ずつファイルを読む方法

id:eel3:20151212:1449931944 へのはてブのコメントより。 gawk なら簡単にできるけど、これも意外と知られてないかな。 http://b.hatena.ne.jp/entry/273514414/comment/Rocco コメントのように、拡張アリアリなら、gawkで1文字/1byteずつ読むことや、mawk…

AWKで1byteずつファイルを読む方法 + 1文字ずつ読む方法の構想

id:eel3:20151102:1446476928 のhcaslのsh版にて、AWKで標準入力/ファイルを1byteずつ読むために試行錯誤したので、独立した記事として書いておく。現時点での結論としては、POSIXの範囲内では、awk(1)単体で標準入力やファイルから1byteずつ中身を読む方法…

8つの言語でテキストフィルタを書き比べた

※2015/11/15追記:現段階では8言語から12言語に増えている。その昔 id:eel3:20120129:1327845759 なんてことをやったのだが、性懲りもなくまた同じようなことをやってみた。作ったものはこちらに置いてある。 GitHub - eel3/hcasl: Command line tool for "h…

CoffeeScript用のMakefile雛形4つ(GNU Make専用)

いやまあ普通は「Cakefile使えよ」となるのだろうけど……それでもメジャーでポピュラーなビルドツールといえばmake(1)で、数あるmake(1)の実装の中で一番人気なのはGNU Makeだと思うわけです。大概のLinuxディストリやMac OS Xのmakeの実体はGNU Makeだ。Free…

英辞郎の辞書ファイル(テキスト形式)をPDIC 1行テキスト形式に変換する

英辞郎のテキスト形式の辞書ファイルが入手できなくなったと聞いて、あわてて『英辞郎 第八版(辞書データVer.141/2014年8月8日版)』を入手した。付属する辞書はVer.1.41。以前購入したのがVer.1.02(2007年03月ごろ)なので、8年半ぶりだ。私の英辞郎の使い…

シェルスクリプトにGo言語を埋め込む

Go言語のコードをスクリプトとして即時実行する方法は、 go run するなり、もう少し工夫して shebang もどきを使って単体のコマンドっぽく実行するなり、いずれも簡単で情報もそれなりに見つかる。一方で、例えば perl(1) や ruby(1) でオプション -e を使う…

ソースコードから標準Cライブラリに含まれてそうな識別子を検索する

組み込み関連でクロスプラットホームなライブラリを開発する時、私の周囲十数メートルの範囲では、使用している標準Cライブラリの機能をドキュメントに明記することがある。というのも、そのライブラリがフリースタンディング環境で使用される可能性があるか…

ゼロパディングされた連番を出力+ディレクトリを作成

1〜12月の各月のデータを格納する目的で、ゼロパディングされた数値でディレクトリを作成したい。楽をしたいので、まずはゼロパディングされた連番を出力する方法を探ってみた。 シェルスクリプト(/bin/sh)の場合 seq(1)には、ゼロパディングして数値の幅…

テキストレコードのフィールドにセパレータを含むデータを埋め込みたい

問題編 テキストデータを、改行区切りのテキストレコードに埋め込んで出力したい。例えばusp Tukubaiでいうところのネーム形式やフィールド形式のフィールドの値として出力したい。問題は、元データに改行が含まれている可能性があることだ。また、フィール…

バッチファイルでISO 8601っぽい表記で現在時刻を出力する

id:eel3:20131109:1383976213 に関連した一発ネタ。バッチファイルで現在時刻をISO 8601っぽいフォーマットで出力してみる。 @echo off :: とりあえず JST固定で echo %DATE:/=-%T%TIME: =0%+09:00 ISO 8601では小数点として `,' と `.' のどちらもOKらしい…

定例処理用バッチファイルでログを日時付きファイル名で出力する

問題編 Windowsのタスクスケジューラなどで定例処理を行う時、ログないしレポートの類を毎回別の名前のファイルに出力したい場合がある。この名前の付け方には、次の2パターンが考えられる。 ファイル名に連番を付ける。 ファイル名に処理を実行した日時を付…

シェルスクリプトで統計処理初級、awk(1)なしで

統計処理と言えるほどではないが、データ処理して中央値や最頻値を眺めていて思った。ある程度本格的に統計処理する人はR言語とかOctaveとかPython*1とかを使うと思うし、そうでない人もPerlやRubyなどのスクリプト言語を使うと思う。シェルスクリプト使いも…

バイナリファイル同士を比較したいけどcmpが無かったので頑張った話

id:eel3:20130826:1377522419 と似たようなパターンのネタ。相変わらずbusyboxな組込みLinux環境で作業していて、バイナリファイルを比較しようとしたらcmp(1)が無かった。dirname(1)に引き続き2度目……。組み込んであるbusyboxのdiffがバイナリファイルに対…

関数/メソッドのコード行数の累積グラフを表示する

Software Design 2013年08月号の第2特集にて、コード行数(LOC)の累積グラフがジニ係数のグラフに似ているとの記述があった。Software Design (ソフトウェア デザイン) 2013年 08月号 [雑誌]出版社/メーカー: 技術評論社発売日: 2013/07/18メディア: 雑誌こ…

シェルスクリプト自身のパスを取得しようとしたらdirnameが無かったので頑張った話

シェルスクリプトを書いていて、実行時にそのスクリプト自身のパスを取得したくなった。バッチファイルでいうコレみたいな感じ。 @echo off echo %~dp0 そのスクリプトは環境変数PATHに登録されたディレクトリに置くことはなく、必ずカレントディレクトリか…

GnuPGで公開鍵暗号方式でファイルを暗号化する為のGUIラッパー

id:eel3:20130526:1369569828 の続き的なネタ。GnuPGで公開鍵暗号方式でファイルを暗号化する場合、使用する公開鍵を指定しなくてはならない。復号化する相手が決まりきっている場合は、バッチファイルに使用する公開鍵まで含めてコマンドを記述しておき、そ…

GnuPGで暗号化されたファイルを復号化する為のラッパー

公開鍵暗号方式で暗号化されたファイルをGnuPGで復号化することがある。Windows上で作業しているので、こんなバッチファイルを作成して「送る」メニューにショートカットを登録している。 @echo off gpg.exe --decrypt-files %* 「送る」メニューのショート…

「クリップボードのテキストをGnuPGで復号化」の代替品の代替品

id:eel3:20120521:1337527087 にて、Windows上でクリップボードにコピーされているGnuPGの暗号化テキストを復号化してテキストビューアで表示するツールを作成した。あのツールはバッチファイルで実装していて、GnuPG(gpg.exe)とttPageとクリップボード上…

Rhino上でCoffeeScriptのコードを実行するインタプリタもどきを作る

CoffeeScriptのスクリプトを直接実行したい場合、CoffeeScriptのコンパイラを動かしているJavaScript処理系で実行することが大半だ。現状ではデフォルトのNode.js、Webブラウザ*1、PhantomJS*2、Windows Script Host*3で実行できることは分かっている。しか…

フロッピディスクのデータ消去作業を自動化する

手元に大量にある3.5インチフロッピディスクを処分したいので、暇を見て必要なデータをサルベージして、データ消去(ランダム値での上書き)とフォーマットを行っている。作業用に購入したUSB-FDDをUbuntuで使用したらなぜかフロッピが軒並み壊れたので*1、W…

フィルタ・ライクなXSLTプロセッサを自作する

色々あって簡単なXSLTプロセッサを作った。HDDの中にはXSLTを使ってXMLを変換する類の仕組みが3つもあるのに、どれも変換するドキュメントとXSLTプロセッサ等のツールをセットにして環境を構築してある。なので手元でちょこちょことXSLTを書いてXMLを変換す…