動かざることバグの如し

近づきたいよ 君の理想に

linux

特定のNIC経由で通信できるか確認するコマンド5選

通信できるか確認したい ネットワーク系の問題を解決するのはプログラミングより厄介で、いわゆる問題の切り出しが肝になる。 ここでは特定のNIC(ここではeth0)とか自身のローカルIPを指定して、そこ経由で通信可能かどうかをチェックできるコマンドをまと…

raspi memo

ネットワークの設定 hostnamectl set-hostname raspi13 # cat /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=JP network={ ssid="xxxx" psk="xxxx" } ip link set wlan0 down …

LinuxでL2TP/IPsecなVPNサーバーを構築する

自宅で動いているTinker Board(ARM)を使ってVPNサーバーを構築してみた。 PPTPでVPNサーバーを構築するのは割と楽なんだが、セキュリティ上の理由から、Macではその認証経由では接続できない。ということで、L2TP/IPsecしかなく、YAMAHAのお高いルーターを…

Nginxで全リクエストをメンテナンスページにリダイレクトする設定

環境 nginx 1.14 やりたいこと メンテナンスするのですべてのリクエストを遮断したい。けどnginx 404のエラーページ出るのは良くないので、用意した静的htmlファイルを表示させたい。 設定 まずnginxの設定を以下。 server { listen 80; server_name hogehog…

ChefでTimezoneとhostnameの設定が1行で出来るようになってた

Chef記事、もっと流行ってほしい。。。(切実 環境 Chef 14 Ubuntu 18.04 ChefでLinuxの構築をしているのだが、タイムゾーンとかhostnameの設定もしなくてはいけない。 が、割とOSによって方法が違くて面倒だったりしたのだが、たまたま公式ドキュメントを見…

Docker&dnsmasqでローカルにオレオレDNSサーバーを構築する

Macで開発する際に/etc/hostsを書き換えて作業することが結構おおい。 が、そのたびにhosts書き換えるのもだるいし、/etc/hostsの悪いところはワイルドカードに対応していないところである。。 ってことで、今回はMacにDNSサーバーを入れてみることにした。…

Linuxでデフォルトゲートウェイを変更するコマンド

環境 centOS Ubuntu 最近のディストリビューションならipコマンド入っているのでいけるはず コマンド 例えばデフォルトゲートウェイのIPを192.168.0.1、経由NICをeth1とすると、 /sbin/ip route replace default via 192.168.0.1 dev eth1

sedコマンドで正規表現を使う場合は注意が必要

結論 sedコマンドの正規表現は高級言語の正規表現と同じ感覚で使うと死ぬ 必ず動作テストをすべし 発端 例えば以下のようなテキストファイルがあったとして、 ~ $cat /tmp/sample.txt 1a 2b 3c 4a 5b 「a」を含む行を一括削除したいとする。以下のコマンドで…

Chefでyarnをインストールするレシピ書いた

やりたいこと yarnでnpmパッケージのインストールを行いたいのではなくyarnバイナリファイル自体をChefで自動インストールしたいって話 レシピ include_recipe 'apt::default' apt_repository 'yarn' do uri 'https://dl.yarnpkg.com/debian/' key 'https://…

msgpackをコマンドラインで使う

MessagePackと呼ばれるJSONのような、、だけど似て非なるオブジェクト形式がある。 MessagePack: It's like JSON. but fast and small. 具体的な説明は公式ドキュメントに譲るとして、phpやruby 、Pythonで扱うライブラリはあるものの、linuxのコマンドで使…

Amazon Linuxのsysctlの設定を参考にすべき

EC2でハイスペックなインスタンスを作成してAmazon Linuxを起動すればベストな設定のsysctlの値が取得できるのでは説 abi.vsyscall32 = 1 crypto.fips_enabled = 0 debug.exception-trace = 1 debug.kprobes-optimization = 1 dev.hpet.max-user-freq = 64 d…

Ubuntuでdebファイルをインストールせずに解凍だけする

環境 Ubuntu 18.04 やりたいこと 通常apt install nginxのようにaptコマンド経由でパッケージのインストールを行うが、事情的に.debファイルを落としてきてインストールってパターンもある。 ただパッケージマネージャー経由じゃないだけあって先に手元で解…

dockerでWineをインストールするときにライセンス確認画面から進めない問題

環境 Ubuntu 18.04 wine 1.6 症状 ubuntuのイメージを使ってdockerをbuildする。 RUN apt-get update RUN apt-get install wine1.6 xvfb -y みたいにwineインストールしようとすると、 (略) If you acquired this product in the United States, this EULA…

シェルスクリプトからrbenv上のrubyを実行したい

環境 rbenv 通常rbenvは/etc/profile.dか~/.bashrcなどの読み込み時にロードされる。 が、シェルスクリプトからだとロードされないのでrbenvが無い環境扱いになってしまう。 ので、以下のように明示的にrbenvを読み込ませる必要がある。 #!/bin/bash export …

Linuxでパーミッション情報やシンボリックリンクを維持したままコピーしたい

特定のディレクトリをバックアップしたいとき、cp -r target destすればもちろんコピーできるが、とっても大切なデータの場合慎重になる。 というのもcpコマンドではパーミッションまで保持してくれないからである。 -aオプションをつけると属性を引き継いだ…

Let's EncryptのワイルドカードSSL証明書の更新に苦労した話

経緯 一応ドメインを持っていて、turai.work ドメインを持っているのだが、Let's EncryptのワイルドカードSSL証明書で運用している。 期限も近づいてきたし、certbot-autoコマンドで更新するか〜と思って更新を実行したのだが /root/certbot/certbot-auto re…

docker-composeでアスタリスク(*)を含むコマンドを実行したい

なんでできへんのや 環境 $docker -v Docker version 18.06.1-ce, build e68fc7a $docker-compose -v docker-compose version 1.22.0, build f46880f やりたいこと docker-composeが起動している上で以下のようにするとdocker内でコマンドを実行できる。 doc…

FFmpegで指定時間ごとに静止画を切り出して連番画像で出力する

動画を機械学習されるあたり、画像に変換する必要があったのでメモ。なんかググって一番最初に出てきたサイトのオプションではできなかったので注意 1秒毎に〜枚画像を生成したい場合 -rオプションをつけることで指定フレームごとに抽出できる。以下のように…

iptablesミスってEC2インスタンスにSSHログイン出来なくなった時の対処法

の対処法 試したのはCentOSだけど、Ubuntuとか他のディストリビューションでも可能と思う sshできなくなったら復元は不可能 GCPみたいに画面を擬似的に映し出す機能はないし、ServersManVPSのようにiptablesを謎の力でリセットするなんてことはEC2では出来な…

シェルスクリプトで引数オプションをパースするテンプレート作った

なんだかんだ言ってシェルスクリプトはどの環境でも動くから自作スクリプトを走らせるにはbashが一番だったりする。 しかしlinux系コマンドでよくある ./exe.sh -i hoge.txt -o out.txt -a みたいなオプションを自分で1から実装するのはつらい。そこでgetop…

ethtoolでネットワークのリンク速度を設定する

Linuxで1GのNICから10GのNICへファイルのコピーをしてたが、めっちゃ遅い。どうもネットワークデバイスが意図しないリンク速度として認識してしまってるらしい。いわゆるオートネゴシエーションが悪さしてるっぽかったので、無効化して手動でリンク速度を設…

gmailへメールが送信できなくなったときはメールヘッダーを見ろ

症状 1つのサーバーからSMTPでGmailのメールアドレスへメールを送信していたが、いつの日からかメールが届かなかったり、メールが数時間レベルで遅延するようになった。心当たりなかったので、原因がよくわからなかったが、どうもGmail側にスパム認定(Gmai…

LinuxでもCrystalDiskMarkぽいディスクベンチマークしたい

fioとは fioと呼ばれるLinux用のディスクI/Oベンチマークツール(ディスク性能計測ツール)が有る。すげー適当に言うとCrystalDiskMarkのLinux版である。 このツール、hdparmコマンドやddコマンドで性能を測定するのに比べてかなり高機能なのだが、いかんせん…

Squidのバージョン4が安定版になっていた話

みんなのプロキシサーバーSquidが長いこと3.xが安定版だったが、今月の2日についにバージョン4が正式版としてリリースされていた。(変更履歴) Squid-4 - Squid Web Proxy Wiki 一方今までの3は非推奨(DEPRECATED)扱いに 一体何が変わったのか、wiki見…

Tinker BoardでIP固定に設定する方法

そういえばTinker Boardを買ったきりで全然起動すらしていなかった() thr3a.hatenablog.com 流石にもったいないのでセットアップしたメモ 環境 Tinker BoardのDebianのOS 20180622-tinker-board-linaro-stretch-alip-v2.0.7.img 方法 そもそもネットワーク…

locateコマンドでディスク全体から一発検索

例えば「libjpeg.soを含むファイルをディスク全体から検索したい」ってときは今までfindコマンド使っていた find / -name "*libjpeg.so*" /usr/lib/x86_64-linux-gnu/libjpeg.so.8 /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/x86_64-linux-gnu/libjpeg.…

H.264対応のffmpegをLinux環境でビルドする

FFmpegは言わずとしれた動画音声変換用アプリケーションだが、ビルドが結構煩雑である。 ビルド済みのバイナリダウンロードしてそれつかえばええやんって話だが、ライセンス的な関係上、H.264のコーデックを使いたい場合は自分でビルドしなければならない っ…

ディスクが壊れてGive root password for maintenanceで起動しない

環境 CentOS 6 症状 ディスクが逝った。Linuxたんは賢いので、故障を検知すると自動でRead Onlyになる。 今回逝ったディスクはrootディスクじゃない別のデータ用ディスク。だからそのディスクだけ交換して再起動すればめでたしめでたし、かと思ったらそもそ…

Ubuntu 18.04以降でDNSサーバーを変更する方法

めっちゃハマった 環境 Ubuntu 17.04以降 ネームサーバーを変更できない問題 DNSの変更は/etc/resolv.conf、という時代は古い。Ubuntu 17.04以降ではsystemd-resolvedがデフォルトで動作しているため、/etc/resolv.confを書き換えても変更されない そもそも/…

DDR4&UEFIのPCでメモリテスト

Memtest86+が死んでる件について メモリテストの定番アプリケーションことMemtest86+ しかし最近は更新が滞っていて、最終更新が2013年(2018年6月29日現在) 当然最新のDDR4やUEFIの規格に対応できているはずもなく、上手く動作しない。そこでMemTest86でや…