TOP ▲
itcore TOP
> TIPS
> sh.php
タグ:シェル 変換 ipアドレス ソート vsftp ssh ログ find tar rsync scp シェル小技 linuxコマンド例 | itcore 2017-2021
サブディレクトリも含めたファイル一覧
ファイル名の一括変換
IPアドレスのソート
vsftpに最近ログインしたID
sshログ自動取得
findコマンド
tarコマンド
rsyncコマンド
scpコマンド
サブディレクトリも含めたファイル一覧
# フルパス ディレクトリも含む
ll -d $(find `pwd`) | sed -e 's/ */ /g'|cut -f 9- -d ' '|sort
# フルパス ファイルのみ
ll -d $(find `pwd` -type f) | sed -e 's/ */ /g'|cut -f 9- -d ' '|sort
# 相対パス ファイルのみ
ll -d $(find . -type f) | sed -e 's/ */ /g'|cut -f 9- -d ' '|sort
ファイル名の一括変換
<conv.sh> axxx-xxxとbxxx-xxxをaxxxとbxxxに変換する。
#!/bin/bash
for file in a*-* b*-*
do
echo mv $file ${file%-*}
mv $file ${file%-*}
done
<実行結果>
mv a1.php-20170301 a1.php
mv b2.php-20170302 b2.php
<文法>
${var/old/new} 変数var内の最初のoldをnewに置換する
${var//old/new} 変数var内の全てのoldをnewに置換する
${var#pattern} 変数var内の最初の文字から検索し, patternにマッチした最短の文字列を削除する
${var##pattern} 変数var内の最初の文字から検索し, patternにマッチした最長の文字列を削除する
${var%pattern} 変数var内の最後の文字から検索し, patternにマッチした最短の文字列を削除する
${var%%pattern} 変数var内の最後の文字から検索し, patternにマッチした最長の文字列を削除する
IPアドレスのソート
</var/log/secure>
Mar 1 20:01:45 www sshd[16294]: refused connect from 52.53.217.10 (52.53.217.10)
<コマンド>
grep refused /var/log/secure| awk '{print $9}' |sort -n -t '.' -k 1,1 -k 2,2 -k 3,3 -k 4,4|uniq
<実行結果>
1.32.43.36
1.189.47.156
2.60.137.125
vsftpに最近ログインしたID
</var/log/vsftpd.log vsftpd.log.*>
Mon Mar 20 14:38:55 2017 1 111.222.333.444 77698 /www/index.html a _ i r user001 ftp 0 * c
<コマンド>
cat /var/log/vsftpd.log* | awk '{print $14}' | sort | uniq
<実行結果>
user001
user002
sshログ自動取得
$ vi .bashrc
# ログの取得 無限ループ対策あり
_LOG_DIR=~/sshlog
mkdir -p $_LOG_DIR
_p_proc=`ps aux | grep $PPID | grep sshd | awk '{print $11}'`
if [ "$_p_proc" = sshd: ]; then
script -fq $_LOG_DIR/`date '+%Y%m%d'`_$$.log
exit;
fi
$ ls -lrt sshlog | tail -3
-rw-rw-r-- 1 itcadm2012 itcadm2012 8569 3月 24 21:30 20170324_17648.log
-rw-rw-r-- 1 itcadm2012 itcadm2012 28964 3月 24 21:31 20170324_7220.log
-rw-rw-r-- 1 itcadm2012 itcadm2012 214 3月 24 21:31 20170324_18719.log
findコマンド
3日以内に更新されたファイル。シンボリックリンクもたどる。
ファイル名のみ表示
# find . -mtime -3 -follow
タイムスタンプ表示
# find . -mtime -3 -follow -ls
24H以内に更新したファイル タイムスタンプ加工 最新順にソート
# find /var/prj/xxx -type f -mtime -1 |xargs ls -l --time-style='+%Y-%m-%d %H:%M:%S'|grep -v '\.git' |grep -v storage |sed -e 's/ */ /g' |cut -f 6- -d ' ' |sort -r
tarコマンド
20210511ディレクトリをアーカイブする。
# tar -cvzf 20210511.tar.gz 20210511
アーカイブの中身を確認する。
# tar -tvzf 20210511.tar.gz
rsyncコマンド
hostから自分のサーバへrsyncする。
# rsync -av ec2-user@host:/home/ec2-user/20210511/ /home/ec2-user/20210511/
scpコマンド
hostから自分のサーバへファイルをコピ-する。
scp ec2-user@host:/home/ec2-user/20210511/xxx /home/ec2-user/20210511/xxx