Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

unix

busyboxで簡易WEB鯖をつくる その3:設定ファイルで色々弄る

実際のところ httpd.confというファイルに内容を記載 $ busybox httpd -f -p 8080 -h ./static -c httpd.conf アクセス デフォでは、すべてのURLからアクセスできるように以下の様になっています A:*192.168.100のサブネット以外を禁止するなら A:192.168.10…

busyboxで簡易WEB鯖をつくる その2:固定HTMLやCGI

実際のところ ディレクトリ構成 $ pwd /home/shuzo/static $ tree . ├── cgi-bin │ └── cmd.cgi └── index.html 1 directory, 2 filesindex.html <h1>Hello, world!</h1> cgi-bin/cmd.cgi #!/bin/sh echo '' echo "<h1>id :1</h1> <p>date: '$(date)'</p>" httpdコマンドでHTML $ busy…

busyboxで簡易WEB鯖をつくる その1:netcat

展示会などの自社プロジェクトでPCが違う事が結構あり、 そういう時にコマンドに謎エイリアスが貼られている等々でビミョ~な違いがあって難儀する事があります。今回使用するbusyboxは単一バイナリで*NIX系のよく使うコマンド群を提供してくれるスグレモ…

GNU parallelコマンドで並列実行する

shuzo-kino.hateblo.jp と似たような話。 GNUのparalellコマンドは文字通り実行を並列にやるコマンドです。 本来の意図として、公式では以下のように説明されています。 GNU parallel is a shell tool for executing jobs in parallel using one or more com…

commコマンドで二つのファイルの共通項や違うトコを検出

diffコマンドとはちょっと異なる、比較用コマンド。 実際のところ 二つのファイルを比較するが、ソートされている事が前提。 こんなファイルがあったとして $ cat test1.txt 00 11 22 33 44 $ cat test2.txt 11 44 99まず、共通の物を出力するには"-12" $ co…

シェルコマンドのオプション”--”は「以降のオプションは無効」という意味かもしれない

bashで'--'を付けると、 それに続くオプションは無効となります。 実際のところ $ bash -c 'echo 123' 123ところがここで“--”をつけると $ bash -- -c 'echo 123' bash: -c: No such file or directoryと、後のオプションが無効化されます。オプションが無効…

stringsコマンドでバイナリの中身(の表示できるところ)を表示する

普通、バイナリファイルの中身はわかりません。 ところが、stringsコマンドをつかうと、バイナリファイルの中身で表示できるところを表示できます。 実際のところ STRINGS(1) STRINGS(1)NAME strings - find the printable strings in a object, or other bi…

i2cgetコマンド

Raspberry PiのようなSBCではI2Cで通信できるもんがあります。 こいつの値をシェル上で楽にとるコマンドとしてi2cgetがあります。 実際のところ I2Cアドレス0x1Cのデバイスの内部アドレス0x11に値を要求するコマンドは以下の通り。 yオプションはi2cdetectと…

x windowのxhostコマンドについて

x windowはSSHで叩く方法もありますが ホスト側で転送先を明示して使うxhostコマンドという奴もあります。ただ、ある種のバッドノウハウとして扱われるセキュリティガバガバ設定なので 利用は計画的にやらんといけません。 参考もと IBM Knowledge Center

socatコマンドでシステム関数をつかう

シェルでsocatコマンドが使えるなら、パイプで繋いでヤーヤーやりたいのが人情というもの。 そういう場合、"system"オプションを使うことでシステム関数(シェルコマンドとか)を利用することが可能です。 実際のところ $ socat -v udp-listen:96960,fork syst…

sh/bashコマンドの"-c"をつけると文字列を実行できる。

実際のところ 普通に文字列を渡す $ bash -c "echo 12" 12 $ sh -c "echo 12" 12 ファイルから読んでみる $ cat samplecode.txt echo 134 $ sh -c "`cat samplecode.txt`" 134これは普通のshコマンドつなぎと結果は同じです。 $ sh < samplecode.txt 134 $ c…

VirtualBoxゲストOSのファイルをホストOSにSCPコマンドでうけとる

参考もと ゲストOSはlocalhost:2222を開けているとします。 ゲストOSのホーム上にある"packet.txt"をホストOSの現在ディレクトリに移動する方法は以下の通り。 $ scp -P 2222 guest@localhost:~/packet.txt ./. guest@localhost's password: packet.txt 100%…

VirtualBoxのゲストOSにホストOSからSSHでログインする(ホストIP設定編)

このネタ何度目やねんって話ですが……またぞろうまくいかなかったので、メモ。 実際のところ VirtualBoxの設定 起動していない状態で、インスタンスの設定からネットワークにとび ポートフォワーディングで、ホストIPをローカルホスト、ホストポートを2222と…

odで数バイト分読みをスキップしたい場合

odで数バイト分読みをスキップしたい場合は"j"オプションがあります。 あらかじめ全部読んで必要部だけ引っ張るのがシェル流でしょうが、 少しでも不可減らしたいときは結構有効だったり。 実際のところ $ printf "0123" | od -j 0 0000000 030460 031462 00…

ナウなヤングが使うというnetplanをネットワーククソ雑魚の私も使ってみむとてするなり

Ubuntu18系から、またネットワーク系コマンドがかわりました……。 はじめてRasPiに触れてから3年で3回は手法がかわってる気がするんですが一体なんなんですかね…… で、今のヤングはnetplanというのを使うそうです。 実際のところ 今書いてまs 参考もと netp…

64bit系で32bitビルド前提のライブラリを使わんといけない場合、dpkgの"--add-architecture"オプションが使える……かも??

RasPi with Ubuntu Mateな環境でOpenCR環境を作ろうとしたときのこと。 libncurses5がないと言われ、ビルドが止まってしまいました。 これ、32bit系でのビルドの方が普及しているらしく ARM系でやってた私はデフォのaptだと導入できない事態に。 調べて見た…

gnupgのパスフレーズをファイルからよむ

macOSのSSH越しだとパスフレーズがうまく動きません。 実際のところ というわけで……(?) passphrase-fileをつかって、 $ ssh robot@192.168.0.13 bash <<SHELL > gpg --batch --passphrase-file password.txt --output example99.txt --decrypt testdata.txt.gpg ></shell>…

gzipしたものは普通のテキスト同様、catで結合できる……!!

実際のところ $ echo 123 | gzip -c > 0001.gz $ echo 456 | gzip -c > 0002.gz$ cat 0001.gz 0002.gz > 999.gz$ zmore 999.gz 123 456 公式によると…… GNU Gzip 参考もと linux - Fast Concatenation of Multiple GZip Files - Stack Overflow GNU Gzip

ssh越しにシンプルなコマンドを実行するだけならsudoもいける

ssh越しにシンプルなコマンドを実行するだけならsudoでもいけます。 実際のところ よくあるのは、poweroffですね。 $ ssh -t robot@robot-desktop.local sudo shutdown -f robot@robot-desktop.local's password: [sudo] password for robot: Shutdown sched…

SSHで接続先のSHELLでアクションをさせたい

実際のところ リモート先がIonoPi (Raspberry Pi 3b+ とPLC的につかえるシールドのついたキット)で、bashで (1)接続したledを発火 (2)現在時刻を接続先のログファイルに記録 という場合、以下のようにします。 $ ssh user@remote bash <<SHELL iono led on date > ~/log/action.log SH</shell>…

Ubuntu mate 18系で"Driver 'sdhost-bcm2835' already registered, aborting"なるエラーを吐いてログインからまともに進めなくなったら……諦めるのが早そう

Ubuntu Mateのパッケージインストール中に事故って電源が落ち、 改めて起動しようとしたところ、以下のようなエラーが…… [ Runtime] Driver 'sdhost-bcm2835' already registered, aborting... 私の場合、パッケージ更新中にこれが発生してしまった事もあっ…

*NIX on Windows な環境で改行コードに泣かされた場合、dos2unix.exeがたすけてくれるかも

*NIX on Windows な環境で改行コードで泣かされたら、dos2unixをつかうと楽ですWindowsのGit bashには標準添付です。 $ dos2unix.exe 1128.diff dos2unix: 1128.diff MODE 0100644 (regular file) dos2unix: using ./d2utmpidGg2W as temporary file dos2un…

git diff等々用に特定コミットの短いハッシュ値がほしい場合

今いるブランチの後ろから二番目にあるハッシュさえあらばいい 7文字なので処理も早い 固定ファイルとしておくには、ポータビリティが宜しくない $ git log --one-lineでお目当てを探したあと、後ろから何番目か抑えておきます。 今回は二番目でした $ git l…

Win環境下に移植した自動スクリプトでCR(¥r)が邪魔をするならtrコマンドで消してしまう

"¥r"を消したいなら、tr -d '\r'で楽ちん。 実際のところ 別に退避させたファイルリストをつかってcpをやろうとしたところ…… "¥rなんか知らんわ" とまるで見に覚えの無いエラーを吐いてこれまで動いていたスクリプトが完全にとまりました ついさっきGit for …

cpコマンドでディレクトリ構造をおくる

cpコマンドでディレクトリ構造を維持してコピーしたいなら"--parents"オプションです。 実際のところ Gitの変更ファイル群を追加->更新順でソートしてディレクトリ構造ごとファイル名を追加する場合 $ git diff --name-status {{COMMIT_ID}} | sort | cut -f…

環境変数のリストを見たいとき

UNIX系で環境変数のリストを見たい時は、printenvが使えます 実際のところ 変数を何も指定しなければ、全部表示されます $ printenv TERM_PROGRAM=Apple_Terminal ANDROID_HOME=/Applications//android-sdk-macosx PYENV_ROOT=/Users/shuzo_kino/.anyenv/env…

easy-rsaのcerを作る時"failed to update database TXT_DB error number 2"とか出たら

easy-rsaのcerを作る時"failed to update database TXT_DB error number 2"とか出たら、 commonName*1の値がブッキングしてるなり、不正である可能性があります。念のため、キーの生成プロセスを最初からやれば確実です。 # cd /etc/openvpn/easy-rsa # ./cl…

アプリの設定が全部終わってる筈なのに外部から接続出来ない時は……ポートを開け忘れてる恐れがある

実にくだらない話だったので、メモ。 実際のところ nginxとuwsgiでサーバーを立て、内部ではチェックできてるのに外から確認できない。 ブラウザには ERR: Connection refused とか出てる。 ほぼ半日潰しました。……何か嫌な予感がして、iptableを調べたとこ…

大物処理中にログアウトせざるを得ない場合、nohupコマンドをつかう

昔々、わけも分からずRails3でアプリをガチガチ作っていたころのお話。railsを起動する時にオマジナイとして、以下のような感じでnohupを使っていました。 $ nohup rails最近は完全にrailsから離れてますが、このコマンド一体何だったのだろうと思いmanを見…

telnetコマンドで雑に仮想端末につなぐ

telnetコマンドは仮想端末に接続する際利用するコマンドです。 なんだかSSHに似てますが、こっちは通信が保護されません。サンプル置き場なり、公開情報置き場に使うのが良さそうです。 実際のところ たとえば、mapscii.meに接続すれば $ telnet mapscii.med…