itcore TOPTIPSsh.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