perlで文字列の置換

単行の置換 複数行の置換 複数行の場合「-0」オプションを使い、オプション修飾子に「m」をつけて実行すれば良い。 オプションの説明 -p -eで受け取る引数を1行ずつ評価する。 -0 セパレータがヌル文字(\0)になり、ファイル全体を一気に読み込む。ファイル全体を1行をみなすようなもの。サイズが大きいファイルに対してはこのオプションをつけない方が良い。 //m 複数処理モード。パターンマッチしたもの全てを置換対象にする。 オプションの説明

任意の文字列を含むファイルを検索

Linuxコマンド「grep」への理解を深めるためにメモ。 grepのオプション -r recursiveの頭文字。サブディレクトリがあれば再帰的に検索する。 -n 検索文字列がマッチした行番号を出力する。 -w 文字列全体にマッチする場合。 -l ファイル名だけ出力する。 使用法1 index.html というファイルから「css」という文字列を含む行をすべて抽出し、行番号を付与する。 使用法2 カレントディレクトリ配下すべてのファイルから「css」という文字列を含む行を抽出し、行番号を付与する。

awkとipコマンドでアドレスを抽出

プレフィクスなどを除いた、自身のIPアドレスのみを表示したい場合、こうする。 環境:CentOs6.8 条件:IPアドレスの一部がわかっている。 ip a | grep “192.168.hoge” | awk ‘{print $2}’ | awk -F/ ‘{print$1}’

コンピュータ名とホスト名の違い

Windowsには「コンピュータ名」と「ホスト名」という設定値がある。 NetBiosを用いたファイル共有やプリントスプール等の通信で使うのがコンピュータ名で、TCP/IP等のインターネット等のIPアドレスを必要とする通信で使うのがホスト名。

syslogをslackに転送

あちこちのネットワーク機器からシスログサー(Linux/rsyslog)に転送されてくるメッセージを、slackにも飛ばす方法。 slack token 取得 “Legacy tokens | Slack” にて “Legacy token generator” を使用してtokenを控える。 いまはレガシートークンの使用ができない、というかセキュリティ的に危険なのでボットトークンを使うべき。 “xoxp-” で始まる文字列がそれ。 名前つきパイプを作成 ログ出力先をパイプに指定する vi /etc/rsyslog.conf rsyslog 再起動 slack転送スクリプトを作成 vi /root/logpost.sh slackに転送用チャンネルを作成 上記スクリプトでcurl コマンドの-dオプションで指定したチャンネル名をslack側にて作成する。存在しないチャンネルにはポストできないので。 スクリプトを実行 以上。 他に考慮すべき点 実行環境がシャットダウン or 再起動したらスクリプト処理が終了してしまうので、再度スクリプトを実行するように工夫する必要はある。

Linux nginx アクセスログからDNS逆引きscript

ふと思いつきで、nginxのアクセスログからアクセス元をDNS逆引きしたくなり、とっさにシェルスクリプトを書いた。 動作環境 CentOS 6.8 GNU bash, version 4.1.2(1)-release (i386-redhat-linux-gnu) ログ形式 スクリプト これ、活用する日はあるのだろうか。。。 もっとスマートな方法があればご指摘頂ければと思う。

Windows10 HomeでWindowsUpdate を無効化する方法

Windows10 Proは設定アプリからWindowsUpdateを止めることができるけどWindows10 Homeだとそれができなかったので、試行錯誤して止める方法をここに記述。 高速スタートアップ無効化 Windowsキー+Xキー同時押し(又はスタートボタンを右クリック)で、メニューから電源オプションをクリックする。 「電源とスリープ」が表示されるので、「関連設定」の「電源の追加設定]をクリックする。 「電源プランの選択またはカスタマイズ」が表示されるので、左ペインの[電源ボタンの動作を選択する]をクリックする。 「電源ボタンの定義とパスワード保護の有効化」が表示されるので、[現在利用可能ではない設定を変更します]をクリックする。 「シャットダウン設定」配下の[高速スタートアップを有効にする(推奨)]のチェックを外す。 「変更を保存」をクリックする。 WindowsUpdateサービス無効化 スタートメニューから「Windows管理ツール」の「サービス」をクリックする。 サービス一覧にて「拡張タブ」内の「WindowsUpdate」をダブルクリックする。 「スタートアップの種類」プルダウンをクリックし、「無効」をクリックする。 「適用」をクリックし、次に「OK」をクリックする。 PCを再起動する。 注意 この方法でWindowsUpdate を無効化すると更新プログラムのチェックなども自動的に実行されなくなるので注意。

perl 配列に改行を付与して出力

perlで配列変数のそれぞれの要素をprintで出力する際にそれぞれの配列要素を改行区切りで表示させる方法(2通り)。 他にもあると思うけど、今のところjoin関数を使うとシンプルで(・∀・)イイ!!。

FTPサーバーをサクッと構築する

CentOS6系でFTPサーバをサクっと構築する方法。 FTPはプレーンテキストでの通信という点だけご留意頂ますようお願い致します(絶句)。 必要なパッケージをインストール 念の為–downloadonlyオプションでローカルにrpmファイルを保存しておく。 デフォルトコンフィグコピー コンフィグ編集 /etc/vsfstpd/vsftpd.conf を vi エディタ等で編集して以下内容にする。 anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES idle_session_timeout=300 data_connection_timeout=30 ascii_upload_enable=YES ascii_download_enable=YES ftpd_banner=Welcome to FTP service. chroot_list_enable=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES xferlog_std_format=NO log_ftp_protocol=YES use_localtime=YES pasv_promiscuous=YES pasv_min_port=50000 pasv_max_port=50030 SELINUX無効化 /etc/selinux/config を vi エディタ等で編集して「SELINUX=enforcing」部分を「SELINUX=disabled」にして保存。 そして reboot 等でOS再起動。 「私はSELINUXマスターなんだ!」という人は無効化しなくてもなんとかできるかもしれない。 hosts.allow修正 /etc/hosts.allow に下記追記。最下行などでOK。 vsftpd : 127.0.0.1 [アクセスを許可するネットワーク] アクセスを許可するネットワークの記法としては、例えば「192.168.0.0/24」を許可したいなら「192.168.0.」とすればOK。 hosts.deny修正 … Read more