dullwhaleのメモ帳

何度も同じことを調べなくてよいように...

2022-01-01から1年間の記事一覧

あるディレクトリ以下の全てのファイルから特定の文字列を含む行を削除したい

export LANG=C find . -type f -print0 | xargs -0 sed -i -e "/needless-string/d" 最初のexport LANG=Cは RE error: illegal byte sequence というエラーを吐かれないようにするための対策 macの場合はsedをgsedに変えて実行する。GNU版とBSD版の動作の違…

回線事業者とプロバイダの違い

回線事業者は物理的な設備を提供し、プロバイダはインターネットへの接続を提供する。 同じ会社が回線事業者かつプロバイダであることもある。 プロバイダが別会社の回線契約もまとめてやってくれるサービスもある。 回線事業者は光、ADSL、ケーブルテレビな…

Fargate強制再デプロイスクリプト

稀にFargateの基盤の更新で、コンテナが強制再起動される旨の通知がくる。 Your application running on AWS Fargate will automatically be updated soon コンテナは基本的に落ちることを想定して作るから、基本的に放置して良い。 ただし、事情によっては…

aws-nukeのconfig雛形

aws nukeを使ってAWSアカウント内のほぼ全てのリソースを削除したいが、一部削除できない/してはいけないリソースがある。 粒度が荒いが、削除しないためのconfigファイルの雛形をメモしておく ファイル名はconfig.ymlとする regions: - us-east-1 - ap-nort…

ワンライナーで使えるアイデア

最初の1行だけ飛ばしたい CSV/TSVファイルなどを処理するとき、最初のヘッダ行が邪魔になることがある。 先頭の行をskipしたい tail -n +2 通常、パイプで繋いで使う。このコマンドは「2行目以降を表示」する。

Node.jsのLambdaを棚卸ししたい

複数のAWSアカウントについて複数のリージョンでNode.jsを使っているLambdaリソースを確認したい事態が発生した。 原因はNode.jsランライムのAWS上でのサポート終了である。 1つのAWSアカウントだけなら、以前メモしたコマンドスニペットで良いが、アカウン…

RDS for MySQLでMySQLアカウントを別のインスタンスにコピーする

RDSインスタンスの移行などでMySQLアカウントをパスワード、権限そのままコピーしたいことがある。 #!/bin/bash set -euo pipefail source .env echo 'SELECT User, Host FROM mysql.user' | \ mysql -uroot -p${OLD_DB_PASSWORD} -h ${OLD_DB_HOST} | \ sed…

MySQLで複数のDATABASEのダンプを取得してリストアしたい

mysqldumpコマンドのオプション--databasesでダンプ対象DATABASEを複数指定できる。 RDSインスタンスからダンプして別のRDSインスタンスへリストアすることを考える。 ダンプコマンド mysqldump -uroot -p -h foo.ap-northeast-1.rds.amazonaws.com --databa…

Codebuildで最新のビルドをAWS CLIを用いて再実行

Codebuildでたくさんのビルドプロジェクトの最新のビルドを再実行したいときは次のようにすれば良い。 grepの部分で必要なビルドだけ抽出したり、除外したりする。 最新のビルドを再実行する # dry-run aws codebuild list-builds | jq --raw-output --monoc…

AWS CLIでECSのタスク定義を更新する

環境変数の更新など、ECSのタスク定義を更新したいが、数が膨大で人の手に負えないことがある。 そんなときはシェルスクリプトを使って更新しろ。 このスクリプトはタスク定義ごとに最新のものを取得し、そのタスク定義をそのまま新しいものとして登録する。…

シェルでお手軽パスワード生成

LC_CTYPE=C tr -dc '0-9A-Za-z' < /dev/random | head -c 41 | pbcopy 少しだけ解説 /dev/randomからbyte列を読み取り、trで欲しいbyte以外をフィルタし、headで指定文字数だけ切り出している。 パスワードに使いたい文字集合をtrに指定する。 パスワード長…

commコマンドを用いてファイルの行の差集合を得る

commコマンドを使え commコマンドはdiffコマンドよりも賢くないが、CSVファイルの比較などにとても強い。 ユーザ一覧などを突合して棚卸しする際などに活躍する。 commコマンドに渡すファイルはあらかじめソートしておく必要がある。 # 引数で指定した左側の…

t4g系EC2インスタンスにZabbix 6.0をインストールする

EC2を吹き飛ばした時のために構築のログを残しておく 前提 マシンイメージはAmazon Linux 2 EC2内でDBを起動せず、Aurora MySQLを使う zabbixはdocker composeで実行する docker、docker composeのインストール # dockerインストール sudo amazon-linux-extr…

CloudFormationドキュメントリンク

SEOの失敗なのか、ggてもリソースのドキュメントが検索に引っかからないことが多々ある。 AWS リソースおよびプロパティタイプのリファレンス - AWS CloudFormation

TerraformでCloudWatch Synthetics Canaryを作成するときのワークアラウンド

TerraformでCloudWatch Synthetics Canaryを作成する際、IAMロールを依存リソースとして一度に作成すると失敗する。 恐らく、IAMロールの作成完了を待たずにcanaryを作成しようとして失敗している。 2つの解決策が考えられる。 先にIAMロールだけ作成してお…

Lambda棚卸し

全般的な注意 Lambda関数本体とLambdaレイヤの両方を確認しろ。 リージョンごとにチェックしろ。特にバージニアリージョンus-east-1に注意せよ。Lambda@Edgeがいるかもしれない。AWS CLIではリージョン指定に--regionオプションが使える。 例 --region us-ea…

ファイル名を一括でmvしたい

sedとxargs -n2 mvを使え。 カレントディレクトリ直下にあるファイル*.tsファイルを*.tsvに一括でmvする。 find ./ -maxdepth 1 -type f -name '*.ts' | sed 'p;s/.ts$/.tsv/' | xargs -n2 mv カレントディレクトリ直下にある全てのファイルのファイル名に.t…

RDSのストレージを暗号化するとKMSが原因で追加料金がかかる

RDSのストレージ暗号化を有効にするためには、KMS(key management service)で鍵を作る必要がある。 Tokyoリージョンでは鍵1つにつき、1ヶ月あたり1 USDかかる。 更に、KMSへの 10,000 件のAPIリクエスト当たり0.03 USDがかかる。 Pricing | AWS Key Manage…

あるIPv4アドレスがAWSのものか調べる

まず、最新のAWSのIPv4範囲を取得する。 curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq --raw-output '.prefixes[].ip_prefix' | sort | uniq > ip-list 次にrubyスクリプトを書く #! /usr/bin/env ruby # 含まれているか確認したいIPv4アドレ…

julia備忘録

行列を行方向、列方向にループで回したい eachrow()とeachcol()を使え。 eachrow eachcol 任意長の配列や行列を事前に作っておきたい ここを見ろ Arrays · The Julia Language 任意の値で初期化する必要があるならzeros()やones()、fill()を使え。

JuliaのHypothesisTests.jlの関数は浮動小数点型のデータ列を受け付けない

カイ二乗検定を行う関数ChisqTest()にFloat64の行列を渡したら怒られた。 関数定義を見ると、整数型の行列だけを受け入れるように作られている。 function ChisqTest(x::AbstractMatrix{T}) where T

MySQLにおけるBETWEENは境界値を含む

`col_name` BETWEEN `first` AND `last` は以下と同等。 `first` <= `col_name` AND `col_name` <= `last` だだし、DATETIME型を扱っている場合は精度に気をつけろ。 同じ結果にならない可能性がある。

アーラン分布

待ち行列理論では指数分布を仮定できると都合が良いが、現実のデータは指数分布よりもアーラン分布によく適合することがある。 指数分布ではx = 0で値が最大となるが、アーラン分布では0から少し離れたx > 0の時点で値が最大になる。 確率密度関数 連続確率…

指数分布とポアソン分布は違う

混同するな。 どちらも平均回発生する事象についての分布だが、見方が違う。 指数分布 次に事象が発生するまでの期間に関する分布 確率密度関数 連続確率分布 期待値は 分散は ポアソン分布 ある期間に事象が発生する回数に関した分布 確率質量関数 離散確率…

juniper SRXのセッション数確認方法

juniperのSRXでは、普通のセッションとNATセッションの区別がない。 セッションがあり、その中にNATされたものがあるといった具合に管理されている。 全体的なセッションの数は次のコマンドで確認できる。 show security flow session summary その中で、特…

Juniper製品のMIB/OID情報

新しめの製品 Junos OSが乗っている新しめのJuniper製品はこのサイトで調べられる。 例: SRXシリーズ SNMP MIB Explorer - Juniper Networks NATに関する情報は1.3.6.1.4.1.2636.3.39.1.7.1.1.5.1以下を見ると良い。configで設定したNATのルールごとにデータ…

Zabbix 5.4でMySQLからメトリクスデータをダンプする

Zabbixから継続的にメトリクスデータを取得する場合はちゃんと仕組みを作った方が良いが、1回限りならば手動でMySQLの中のデータを探ってダンプした方が早いことがある。 その方法についてメモする。 まずはZabbixのデータが溜められているMySQLサーバにログ…

Elasticsearchはディスクの空き容量が少なくなるとindexが読み取り専用になる

Elasticsearchではノードのディスクの空き容量が少なくなるとflood stage watermarkに入り、そのノードの全てのindexが読み取り専用になってしまう。 これはマシンのディスクが一杯になってホストごとダウンしないようにするための仕組みらしい。 デフォルト…

SNMPでネットワーク機器のポートの情報を取得する

自分が使った関心のあるものだけまとめた インターフェイスに関するMIBはifMIBとかIF-MIBとか呼ばれている。 ifIndexはインターフェイスの番号である。 ifIndexはネットワーク機器のコンソールで見える番号と違うことが多いから注意する。 累計数のカウンタ…

Arkimeで表示されているpacpのファイルとファイルシステム上のファイルに差があるときの対処

パケットアナライザArkimeで、手動でpcapファイルを削除するとArkimeと実際のファイルの存在に齟齬が出る。 これは次のようにArkimeのperlスクリプトを起動することで解消できる。 /opt/arkime/db/db.pl ElasticsearchのURL sync-files Arkimeのホスト pcap…