#author("2019-08-10T10:32:58+00:00","default:wikiadmin","wikiadmin") #author("2021-04-17T08:40:55+00:00","default:wikiadmin","wikiadmin") -一行完結だが、役に立つコマンド等。ほとんどLinuxで確認しているのでSolarisだと使えないかもしれない。 #contents *Telnet自動化 簡易版 [#kf022990] コマンド内容をシェルに書いておく。速すぎると失敗するのでスリープを入れる #!/bin/sh sleep 2; echo LOGIN_ACCOUNT sleep 2; echo PASSWORD sleep 5; echo pwd sleep 1; echo exit 実行は以下のように行う sh test.txt | telnet 192.168.x.x *コマンド集 [#x73ee2ca] **xargsで並列curl実行 [#j6f041ec] urllistにurlを入れておき、P3で3並列実行 cat urllist.txt | xargs -P3 -t -n1 curl >/dev/null **ファイルを結合(INNER JOINのような) [#j69fb2ba] join -t, a.csv b.csv > joined.csv **findで拡張子複数を検索 [#ub00be5a] find -name "*.txt" -or -name "*.dat" **findで前日に更新されたファイルを列挙 [#y43e1681] find . -mtime +0 -mtime -2 **findで60分以上120分以内に更新されたファイルを列挙 [#wd55eeaa] find . -mmin +60 -mmin -120 **findで特定の日付以内に更新されたディレクトリ列挙 [#r81cc931] find . -maxdepth 1 -mtime +1-type d 上記だと1日以内に更新されたディレクトリを列挙 **findで見つかったファイルの合計MB単位で表示する [#wc363590] find . -name "*log" | xargs ls -la | awk '{ total +=$5 }; END { print total/1024/1024 }' **上記のさらにgzを対象にしたバージョン [#nd9ff25a] find . -name "*gz" | xargs gzip -l | tail -n 1 **ディレクトリ古い順に表示して6位から表示 [#md6bc612] ls -t1 | tail -n +6 **リソース監視 [#kad59585] dstat -am --top-bio --top-io -n 5 **ファイルを直接書き換える [#yacd8a8f] sed -i 's/hogehoge/fugafuga/' hoge.txt findとのあわせ技 find . -name "*.css" | xargs sed -i 's/fuga//' **gzのファイルを展開せずにgrepする [#p3ae2a2c] zgrep "キーワード" xxxlog.gz -件数を確認するだけなら以下でよい zgrep "キーワード" xxxlog.gz | wc -l -結果をプレーンテキストに出力する zgrep "キーワード" xxxlog.gz > grepresult.txt **ftp専用ユーザの作成 [#tfbb30c4] useradd -s /sbin/nologin ユーザ名 **ls編 [#g3d6594f] |該当ディレクトリ以下ではなく該当ディレクトリだけの情報を見る|ls -d| |ディレクトリだけ表示|ls -al | grep ^d| **指定ディレクトリ以下の総ディスク使用量を求める。 [#xd9a3195] du -h --max-depth=1 /var/tmp **開いているポートを見る [#kb8f2365] netstat -tpl **touchで日付時刻指定 [#xd25a46a] touch -t 200612312400 lastupdate ファイルに基準時刻でtouchしておき、以下のコマンドでその時点以後に更新されたファイルがわかる。 find . -newer lastupdate **findで複数場所から指定のファイルを探す [#p0c54dab] find /usr/local /usr/bin /usr/sbin -type f -print **findで見つけたファイルと.bkを持つファイルのdiffを一気に表示 [#td7a3e19] find . -name "org.txt" -print0 | xargs -0 -i diff {} {}.bk 上記でorg.txtとorg.txt.bkの比較になる。sedでの書き換えと合わせ技 **findでフルパス [#kf98bab1] 探す場所をフルパスで指定すればよい。手動で入力してもよいが、pwdを使うと楽 find `pwd` -name "*" **findで最終更新日を基準にファイルを探す [#w0ab3edf] -50日前より古い更新日付を持つファイル find ./ -mtime +50 -name "*.gz" -50日以内に更新されたファイル find ./ -mtime -50 -name "*.gz" -2分以内に更新されたファイル find . -mmin -2 -上記を消す場合(古いファイルを消す) find ./ -mtime +50 -name "*.gz" | xargs rm -f 危険なのでいったんリストアップしてから、|以降の処理を加えるとよいだろう -特定フォルダを除外してfind find . -path "./backup" -prune -o -type f -name "*.txt" ここではbackupフォルダを検索対象から外し、もうひとつの条件を-oオプションで付与している。 **ファイル数が多すぎるフォルダから1000ファイルずつバックアップ [#wf276cba] rmやlsで「引数リストが長すぎます」のエラーが出てしまった時の対応でまずバックアップを取得したかったので1000ファイルずつ別のフォルダ(ここでは1_work)にコピーした。 ls --color=never | head -n 1000 | xargs -I {} mv -v {} ../1_work/ **emacsのバックアップを消す [#eea178b4] find . -name "*~" | xargs rm **特定の関数を使っているファイルをリストアップ [#f4a1be16] find . -name '*.php' -type f -print | xargs grep wordwrap 2>/dev/null find . -name "*.php" -type f | xargs grep echo **自分がどのグループに所属するか等の情報を見るコマンド [#c953eb9f] id **isoイメージをマウントする [#l7cb5892] mount -o loop xxxx.iso iso_tmp **画面のログを取る〜script [#g06b6430] script ログファイル名 exitするまで画面内容をログにためてくれる。エスケープシーケンスを正しく表示させるためログはcatでみるべし **指定の行数でファイル分割〜split [#i459c248] split -l ? intput.txt **psですべてを表示させる [#p098da1f] ps -efw **lastログのDNSホスト取得 [#x6c6e592] last | grep "\.r" | awk '{ print $3 }' **不正侵入者のIP取得(Linux限定) [#qbaacafa] grep Did secure* | awk -F" " '{print $12}' grep Illegal secure* | awk -F" " '{print $10}' | uniq grep refused /var/log/secure* | awk -F" " '{print $10}' | sort | uniq -c | wc -l grep refused /var/log/secure* | awk -F" " '{print $10}' | sort | uniq -c | sort -r -n **不正侵入者国別ランキング [#e6bbb4a0] grep refused /var/log/secure* | awk -F " " '{print $9}' |xargs -n 1 geoiplookup -f /usr/share/GeoIP/GeoIP.dat|sort|uniq -c|sort -n **CSVの特定列取得 [#ta638cd9] echo "removed,b,c,d" | awk -F"," '{print $2","$3","$4}' **文字列の前後にリテラルを付与 [#w2943fac] ダブルクォーテーションは\でエスケープ cat category.dat | awk '{print "categories.add(\"" $1 "\");"}' **n日前GET [#r26e8c60] date --date 'n days ago' '+%y%m%d' **日付設定(Linux) [#febc9de2] 2006/02/15 11:30 date 0215113006 **特定のユーザーにのみsu - を許可 [#e6f523a8] vi /etc/pam.d/suで下記部分をアンコメント auth required /lib/security/pam_wheel.so use_uid **シャットダウンする [#p06df3cc] shutdown -h now(haltはNG) **HDDの速度調査 [#za24ed34] hdparm -ft /dev/hda **ハードウェア情報 [#yd6ef53a] lshwをインストールする。ほかにもlspciやlsusbがある **コメント除去 [#eaff7378] grep -v ^# **コメントと空行も除去 [#ba2ead91] grep -v -e "^[ \t]*#" -e "^$" /etc/httpd/conf/httpd.conf **zipでディレクトリごと圧縮 [#e121c13e] -圧縮したいディレクトリの上で以下のコマンドを実行 zip -r xxxx.zip ./圧縮したいディレクトリ **改行コードをみる [#l021ce23] cat -v ファイル名 CRLFなら^Mが行末に出る **gzで圧縮されたファイルを解凍せずに見る [#h1b95464] zcat ファイル.gz | more *HOSTNAME変更 [#xd44ab4f] **CentOS7より後 [#c0f6e2b5] hostnamectl set-hostname xxx **CentOS6以前 [#n9817ce1] hostname NEW_NAME vi /etc/sysconfig/network編集 vi /etc/hosts編集 ネットワーク再起動 /etc/init.d/network restart *キーボード編 [#n55023aa] **CRL+Dでログアウト [#fef23802] *有名ソフトウェア [#l52a2f3e] **tarで所有者情報を消す [#la84b401] tar czf /var/tmp/hoge.tar.gz hoge/ --no-same-owner --no-same-permissions **AWK [#eb9fffdd] awk -F "delimiter" 'print {$1}' grep wiki access_log | awk '{ printf("%10s,%10s\n",$1,$11)}' | grep -v "-" | grep -v 221.186.64.20 -csv処理(単純バージョン) awk -F , '{ print $1, $3, $5; }' 対象ファイル名 -特定のファイルの先頭前後に文字をつける awk '{print "prefix" $1 "suffix"}' account.txt *ダウンロードテクニック [#j37836ea] **正当性確認 [#hedb4126] -ダウンロードした巨大ファイルはチェックサムで壊れてないか確認しましょう! md5sum ファイル名 sha1sum ファイル名 *ネットワークの通信量を調べる [#k20c5368] netstat -ic ソースは以下のページ http://www.math.kobe-u.ac.jp/~kodama/tips-netstatus.html *文字コード変換 [#s04c11ff] -nkfは知ってるけどiconvは使い方よくわからんかった。ともにEUC-JPのファイルをiso-2022-jpに変換するというもの。出力はコンソールなのでファイルに出したいならリダイレクトすればよい。 **nkf [#r87d1ce1] nkf **iconv [#f2ca3c57] -fは入力ファイル文字コード。-tは出力文字コード。 iconv -f EUC-JP -t iso-2022-jp 入力ファイル名 #counter