Bye Bye Moore

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

linux

systemdで指定時間ごとに稼働するスクリプトを書く

定期実行はcrontabと習いましたが、 イマドキのナウなヤングはsystemdでやるそうです。 実際のところ 60分ごとに実行 [Unit] Description=Runs mytimer every hour [Service] ExecStart=/bin/bash /path/to/action [Timer] OnUnitActiveSec=1h [Install] Wan…

opensslの暗号文生成にてパディングをなくす

OpenSSLで暗号化する際、ブロック暗号だと一定単位未満だった場合、パディングが行われます。 何らかの事情でこのパディングが邪魔な場合、"-nopad"オプションでなしにする事が可能です。 nopadオプションを使う場合は復号する際の長さに注意してください。…

openssl randでhexな乱数を生成する

$ openssl rand -hex 12 ea8fe2a0267f3405adec4dff $ openssl rand -hex 12 74f10baf6b97f77d9004670c $ openssl rand -hex 12 819b03c9ce4c695592f2943c

高速圧縮/解凍ができるlzop

gzipより10倍早いらしい圧縮方法。 netcatのようなコマンドと合わせると威力を発揮しそう。 実際のところ 導入 $ sudo apt install lzop 使う $ tar --lzop -cf testfile.lzo fileまたは $ lzop testfile ファイルが大きくなるケースもある!? あくまで「高…

pvコマンドでパイプ処理の進捗をみる

pvコマンドはPipeViewerの略で、名前の通りパイプ処理の進捗状態を監視するコマンドです。 pv - monitor the progress of data through a pipe 感じはaptでパッケージ導入したときに出るアレです。 実際のところ debian系ではデフォでは入ってないので、apt…

ncコマンドのUDP受信状態から結果を送り返す

二つのRasPiをUDPで繋いで通信するアプリを書いていた時 netcatで導通試験をする場合、送信と受信を毎回入れ替えて書いてました。 なんとなく不毛な気がして、調べたところ……ちゃんとありました。 実際のところ guestとhostのraspberry Piがある想定で、host…

netcat/ncでポートが空いてるかしらべる

接続先のポート番号が解放されているか確認するときはnetcat が使えるかも 実際のところ pingコマンドはレイヤーが違ってダメなのでnetcat $ nc -vz 192.168.0.251 9600 Connection to 192.168.0.251 9600 port [tcp/*] succeeded!udp通信の場合"-u"オプショ…

rfkillで無線インターフェイスを止める

以前、raspberry piのbluetoothやwifiを無効化するコマンドを紹介しました。 rfkillはもう少し普遍的なコマンドで、linux系のコマンドとして色んなボードに適用可能となっています。 実際のところ 無線のリストを出す $ sudo rfkill list 通し番号0番の無線…

Linux系ボードでi2cで通信しないならi2cdetectでアドレスを調べなおすのも手

それまで使っていたRasPi用I2CPythonスクリプトを違うデバイスで転用したところ IOError: [Errno 121] Remote I/O error などと怒られたのですが、全く検討がつかず。入れ替えこそしたものの、中の石も周辺回路もほぼ同じなのに一体なぜ……?あれこれ調べてい…

nmcliで接続情報を消したいとき

手違いで同盟の接続先を登録してしまったとします。 たとえば、こんな感じ。 $ nmcli con NAME UUID TYPE DEVICE enxb827ebaaa 1841d147-zzz ethernet enxb827eb2aaa gsm-4gpi-interlink 9c74f8c4-xxx gsm cdc-wdm0 gsm-4gpi-interlink db17694a-yyy gsm -- …

スクショをとるscrotコマンド

発表は2000年と、わりと新しい?ツールみたいです。 実際のところ $ sudo apt install scrotいわゆるstrftime記法でタイムスタンプの記述、 画像サイズを指定する独自記法をつかってファイル名を指定できるので $ scrot '%Y-%m-%d_$wx$h.png'これは"2020-02-…

時刻フォーマットISO 8601について

いままで時刻というと 2013-09-01 06:52:14といった読みやすいフォーマットを勝手に作ってましたが GPSと連動する仕事が多くなってきてスペースが邪魔だったり色々あったので 調べ直してみました。すると、当然というか何というか、世界基準のタイムスタンプ…

opensslのサブコマンドで特定の16進数が素数かどうか判定する

$ openssl prime -hex ABAB is not primeなんやこれ生活便利ツールか(今更— 木野修造@零細事業主 (@shuzo_kino) September 27, 2019 特定の16進数が素数かどうか即出てくる人は少ないと思います。 OpenSSLのサブコマンドprimeは16進数でも、それが素数かど…

dateコマンドで日時の文字列をN時間進める

実際のところ 協定世界時を日本標準時に変更するのは以下の通り $ date -d '2013-09-01 06:52:41 9 hours' '+%Y-%m-%d %H:%M:%S' 2013-09-01 15:52:41

opensslのサブコマンドでpen特定の16進数が素数かどうか判定する

$ openssl prime -hex ABAB is not primeなんやこれ生活便利ツールか(今更— 木野修造@零細事業主 (@shuzo_kino) September 27, 2019 $ openssl prime -hex AB AB is not prime $ openssl prime -hex D D is prime

Ubuntuのユーザーに紐づいたパスワードを変更

実際のところ デフォではパスワード設定のあるなしに関わらず、上書きされます。 入力が表示されない状態で、二回入力します。 $ sudo passwd user1 新しい UNIX パスワードを入力してください: 新しい UNIX パスワードを再入力してください: passwd: パスワ…

ユーザーのデフォルトのホームディレクトリを変更する

実際のところ $ useradd -d /etc/ userA 参考もと 【 useradd 】 ユーザーを追加する | 日経 xTECH(クロステック)

usermodコマンドで端末のユーザー管理を行う

yourgropというグループを作成し、ユーザーuser-nameを登録する手順は以下の通り。 sudo usermod -a -G <yourgroup> <user-name>他にも、時限式のユーザーを作成したり、特定のユーザーのパスワードを無効化してログインできなくしたりする能力があります。 参考もと man usermod</user-name></yourgroup>

X WindowはUbuntuでも使える

shuzo-kino.hateblo.jp ではRasPiでやっていましたが、VirtualBox上のUbuntuでも当然同じことができます。 実際のところ $ ssh -X -C user@localhost -p 2222 encrobot@localhost's password: Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 5.0.0-36-generic x8…

PermissionError: [Errno 13] Permission denied: '/dev/ttyACM0'とか怒られたら

Pythonでシリアルポートを開こうとしたところ、以下のようなエラーが。 >>> ser = serial.Serial('/dev/ttyACM0', 57600) Traceback (most recent call last): File "/home/hoge/anaconda3/lib/python3.7/site-packages/serial/serialposix.py", line 265, i…

diffの"-r"オプションでディレクトリ単位でのdiffをだすことができる

diffの"-r"オプションでディレクトリ単位でのdiffを出力できます。 用途としては 何らかの事情でGit管理外で更新したネタ*1の差分チェック 似た作業だけど途中から過程が違うログファイルの比較*2 なんかがあります。manの解説はこんな風になってますね。 -r…

Linux系のシェルでi2cを扱う

i2cのインターフェイスが出ているLinux系環境でシェル経由でi2cデバイスを扱うコマンドがあります。 実際のところ 導入 $ sudo apt-get install i2c-tools つかいかた i2cset "-y"は対話モードを無効化。パイプでつなぐなら必須。 i2cset [-f] [-y] [-m mask…

シェルスクリプト だけで数値が格納されたファイルの数値を加減算する

実際のところ 数値が一行分格納されてるだけの以下のようなファイルがあったとします。 $ cat basedata.txt 14こいつの値を1追加して上書きするにはexprをつかって以下のような感じで実装します $ expr $(cat basedata.txt) + 1 > basedata.txt $ cat baseda…

シェルコマンドでifなしで前のコマンドが成立した時に次のコマンドを実行する

とある事情により、if文やtest([)を使わずにファイルが存在するか確認して次のコマンドを実行するという奇怪な処理を実装する必要がでてきました。 その時の調査メモです。 実際のところ 手っ取り早い方法としてlsで存在を確認し ファイルが存在しないとエラ…

diskutilのサブコマンドeraseDiskでSDカードを初期化

クソザコナメクジなので知らなかったのですが、diskUtilってフォーマット用の命令もあったんですね…… これを使えば、RasPI用カードの初期化が楽にできちゃいます。 実際のところ コマンドの説目いをみると、以下のようになってます。 $ diskutil eraseDisk -…

shellでTDDするshunit2 その5:Table Driven Testで似たテストを自動化

Table Driven Testをつかうと、似たデータのテストをブン回すときに便利です。 実際のところ ヒアドキュメントで while read desc arg want; do got=$(fn ${arg}) rtrn=$? assertTrue "${desc}: fn() unexpected error; return ${rtrn}" ${rtrn} assertEqual…

shcコマンドでシェルスクリプト を難読化(というかバイナリ化)する

まあ、ガチの人に狙われたら一たまりもないので……気休めかもしれません。 実際のところ myscript.shを加工したい場合、以下のコマンドで"myscript.sh.x"と"myscript.sh.x.c"というのができます。 構造としては、シェルスクリプトをC言語に変換し、そいつをビ…

seqとprintfでjotの16進数っぽい記法をつかう

shuzo-kino.hateblo.jp という記事を書きましたが……jotはopenBSD由来のコマンドで 多少遅くなっても seqとprintfの合わせ技の方が良さげ $ seq 0 10 100 | xargs printf "0x%04x\n" 0x0000 0x000a 0x0014 0x001e 0x0028 0x0032 0x003c 0x0046 0x0050 0x005a …

netcat/ncの送信データ改行をCRLFにする

改行の取り扱いはWindowsと*NIX系で違いますが、 何らかの事情でnetcatの出力をCRLF固定としたい場合もあるでしょう。 その場合、"-C"オプションを使うと、そこを固定できます。 "-C' Send CRLF as line-ending" 実際のところ $ echo "hoge" | nc -C localho…

Raspberry Pi 3 B+を WiFiアクセスポイントとして運用する

RasPiをWiFiアクセスポイントに設定すると、 機器の接続で楽できて便利ですね。 今回はそんな話。 実際のところ 参考もと様にスクリプト例が置いてありましたので、 こちらを参考に……。 #!/bin/bash # # This version uses September 2017 august stretch im…