目錄
一、根據PID過濾程序所有資訊
二、根據程序名過濾程序資訊
三、根據使用者名查詢該使用者的相關資訊
四、加強系統的一些配置
五:實作磁盤分區的
六、使用一整塊硬碟建立邏輯卷
七、将一塊硬碟分區,然後分區設定為虛拟卷
一、根據PID過濾程序所有資訊
#! /bin/bash
# Author:謝公子
# Date:2018-10-10
# Function: 根據使用者輸入的PID,過濾出該PID所有的資訊
read -p "請輸入要查詢的PID: " P
n=`ps -aux| awk '$2~/^'$P'$/{print $11}'|wc -l`
if [ $n -eq 0 ];then
echo "該PID不存在!!"
exit
fi
echo "--------------------------------"
echo "程序PID: $P"
echo "程序指令:`ps -aux| awk '$2~/^'$P'$/{print $11}'`"
echo "程序所屬使用者: `ps -aux| awk '$2~/^'$P'$/{print $1}'`"
echo "CPU占用率:`ps -aux| awk '$2~/^'$P'$/{print $3}'`%"
echo "記憶體占用率:`ps -aux| awk '$2~/^'$P'$/{print $4}'`%"
echo "程序開始運作的時刻:`ps -aux| awk '$2~/^'$P'$/{print $9}'`"
echo "程序運作的時間:`ps -aux| awk '$2~/^'$P'$/{print $10}'`"
echo "程序狀态:`ps -aux| awk '$2~/^'$P'$/{print $8}'`"
echo "程序虛拟記憶體:`ps -aux| awk '$2~/^'$P'$/{print $5}'`"
echo "程序共享記憶體:`ps -aux| awk '$2~/^'$P'$/{print $6}'`"
echo "--------------------------------"
二、根據程序名過濾程序資訊
會顯示出該程序名包含的所有線程
#! /bin/bash
# Author:謝公子
# Date:2018-10-10
# Function: 根據輸入的程式的名字過濾出所對應的PID,并顯示出詳細資訊,如果有幾個PID,則全部顯示
read -p "請輸入要查詢的程序名:" NAME
N=`ps -aux | grep $NAME | grep -v grep | wc -l` ##統計程序總數
if [ $N -le 0 ];then
echo "該程序名沒有運作!"
fi
i=1
while [ $N -gt 0 ]
do
echo "程序PID: `ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $2}'`"
echo "程序指令:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $11}'`"
echo "程序所屬使用者: `ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $1}'`"
echo "CPU占用率:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $3}'`%"
echo "記憶體占用率:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $4}'`%"
echo "程序開始運作的時刻:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $9}'`"
echo "程序運作的時間:` ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $11}'`"
echo "程序狀态:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $8}'`"
echo "程序虛拟記憶體:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $5}'`"
echo "程序共享記憶體:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $6}'`"
echo "***************************************************************"
let N-- i++
done
三、根據使用者名查詢該使用者的相關資訊
#! /bin/bash
# Author:謝公子
# Date:2018-10-12
# Function:根據使用者名查詢該使用者的所有資訊
read -p "請輸入要查詢的使用者名:" A
echo "------------------------------"
n=`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}' | wc -l`
if [ $n -eq 0 ];then
echo "該使用者不存在"
echo "------------------------------"
else
echo "該使用者的使用者名:$A"
echo "該使用者的UID:`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $3}'`"
echo "該使用者的組為:`id $A | awk {'print $3'}`"
echo "該使用者的GID為:`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $4}'`"
echo "該使用者的家目錄為:`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $6}'`"
Login=`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $7}'`
if [ $Login == "/bin/bash" ];then
echo "該使用者有登入系統的權限!!"
echo "------------------------------"
elif [ $Login == "/sbin/nologin" ];then
echo "該使用者沒有登入系統的權限!!"
echo "------------------------------"
fi
fi
四、加強系統的一些配置
#! /bin/bash
# Author:謝公子
# Date:2018-10-11
# Function:對賬戶的密碼的一些加強
read -p "設定密碼最多可多少天不修改:" A
read -p "設定密碼修改之間最小的天數:" B
read -p "設定密碼最短的長度:" C
read -p "設定密碼失效前多少天通知使用者:" D
sed -i '/^PASS_MAX_DAYS/c\PASS_MAX_DAYS '$A'' /etc/login.defs
sed -i '/^PASS_MIN_DAYS/c\PASS_MIN_DAYS '$B'' /etc/login.defs
sed -i '/^PASS_MIN_LEN/c\PASS_MIN_LEN '$C'' /etc/login.defs
sed -i '/^PASS_WARN_AGE/c\PASS_WARN_AGE '$D'' /etc/login.defs
echo "已對密碼進行加強,新使用者不得和舊密碼相同,且新密碼必須同時包含數字、小寫字母,大寫字母!!"
sed -i '/pam_pwquality.so/c\password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1' /etc/pam.d/system-auth
echo "已對密碼進行加強,如果輸入錯誤密碼超過3次,則鎖定賬戶!!"
n=`cat /etc/pam.d/sshd | grep "auth required pam_tally2.so "|wc -l`
if [ $n -eq 0 ];then
sed -i '/%PAM-1.0/a\auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300' /etc/pam.d/sshd
fi
echo "已設定禁止root使用者遠端登入!!"
sed -i '/PermitRootLogin/c\PermitRootLogin no' /etc/ssh/sshd_config
read -p "設定曆史指令儲存條數:" E
read -p "設定賬戶自動登出時間:" F
sed -i '/^HISTSIZE/c\HISTSIZE='$E'' /etc/profile
sed -i '/^HISTSIZE/a\TMOUT='$F'' /etc/profile
echo "已設定隻允許wheel組的使用者可以使用su指令切換到root使用者!"
sed -i '/pam_wheel.so use_uid/c\auth required pam_wheel.so use_uid ' /etc/pam.d/su
n=`cat /etc/login.defs | grep SU_WHEEL_ONLY | wc -l`
if [ $n -eq 0 ];then
echo SU_WHEEL_ONLY yes >> /etc/login.defs
fi
echo "即将對系統中的賬戶進行檢查...."
echo "系統中有登入權限的使用者有:"
awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd
echo "********************************************"
echo "系統中UID=0的使用者有:"
awk -F: '($3=="0"){print $1}' /etc/passwd
echo "********************************************"
N=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
echo "系統中空密碼使用者有:$N"
if [ $N -eq 0 ];then
echo "恭喜你,系統中無空密碼使用者!!"
echo "********************************************"
else
i=1
while [ $N -gt 0 ]
do
None=`awk -F: '($2==""){print $1}' /etc/shadow|awk 'NR=='$i'{print}'`
echo "------------------------"
echo $None
echo "必須為空使用者設定密碼!!"
passwd $None
let N--
done
M=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
if [ $M -eq 0 ];then
echo "恭喜,系統中已經沒有空密碼使用者了!"
else
echo "系統中還存在空密碼使用者:$M"
fi
fi
echo "即将對系統中重要檔案進行鎖定,鎖定後将無法添加删除使用者群組"
read -p "警告:此腳本運作後将無法添加删除使用者群組!!确定輸入Y,取消輸入N;Y/N:" i
case $i in
[Y,y])
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
echo "鎖定成功!"
;;
[N,n])
chattr -i /etc/passwd
chattr -i /etc/shadow
chattr -i /etc/group
chattr -i /etc/gshadow
echo "取消鎖定成功!!"
;;
*)
echo "請輸入Y/y or N/n"
esac
五:實作磁盤分區的
隻支援配置設定主分區和标準的linux檔案系統(ext4/xfs)的分區
#! /bin/bash
# Author:謝公子
# Date:2018-10-13
# Function:對硬碟進行分區,得到一個标準的linux檔案系統(ext4/xfs)的主分區
cat /proc/partitions > old
read -p "請輸入你要分區的硬碟(寫絕對路徑,如:/dev/sda):" A
if [ -e $A ];then
echo "true"
else
echo "該裝置不存在!!"
exit
fi
read -p "請輸入你要建立的磁盤分區類型(這裡隻能是主分區,預設按回車即可):" B
read -p "請輸入分區數字,範圍1-4,預設從1開始,預設按回車即可:" C
read -p "請輸入扇區起始表号,預設按回車即可:" D
read -p "請輸入你要分區的分區大小(格式:如 +5G ):" E
fdisk $A << EOF
n
p
$C
$D
$E
w
EOF
echo "一個标準的linux檔案系統的分區已經建立好!!"
partprobe $A
echo "-------------------------------"
cat /proc/partitions
cat /proc/partitions > new
F=`diff new old | grep "<" | awk '{print $5}'`
echo "-------------------------------"
echo $F
echo "你想對新分區設定什麼類型的檔案系統?有以下選項:"
echo "A:ext4檔案系統"
echo "B:xfs檔案系統"
read -p "請輸入你的選擇:" G
case $G in
a|A)
mkfs.ext4 /dev/$F
echo "該分區将被挂載在 "/mnt/$F" 下"
m=`ls /mnt/|grep $F | wc -l`
if [ $m -eq 0 ];then
mkdir /mnt/$F
fi
n=`cat /etc/fstab | grep /dev/$F| wc -l`
if [ $n -eq 0 ];then
echo "/dev/$F /mnt/$F ext4 defaults 0 0" >> /etc/fstab
else
sed -i '/^\/dev\/$F/c\/dev/$F /mnt/$F ext4 defaults 0 0' /etc/fstab
fi
mount -a
df -Th
;;
b|B)
mkfs.xfs -f /dev/$F
echo "該分區将被挂載在 "/mnt/$F" 下"
m=`ls /mnt/|grep $F | wc -l`
if [ $m -eq 0 ];then
mkdir /mnt/$F
fi
n=`cat /etc/fstab | grep /dev/$F | wc -l`
if [ $n -eq 0 ];then
echo "/dev/$F /mnt/$F xfs defaults 0 0" >> /etc/fstab
else
sed -i '/^\/dev\/$F/c\/dev/$F /mnt/$F xfs defaults 0 0' /etc/fstab
fi
mount -a
df -Th
;;
*)
echo "你的輸入有誤!!"
esac
六、使用一整塊硬碟建立邏輯卷
#!/bin/bash
# Author:謝公子
# Date:2018-10-12
# Function:使用一整塊硬碟建立LVM邏輯卷
read -p "請輸入你要做成邏輯卷的硬碟(寫絕對路徑,如:/dev/sda):" path
if [ -e $path ];then
echo "true"
else
echo "該裝置不存在!!"
exit
fi
pvcreate $path
echo "該硬碟已做成實體卷!"
vgcreate myvg $path
echo "該實體卷已加入卷組 myvg 中"
vgs
free=`vgs| awk '$1~/myvg/{print}'|awk '{print $6}'`
echo "該實體卷剩餘的空間大小為:$free "
read -p "請輸入你要建立邏輯卷的大小(如:1G):" repy2
lvcreate -L $repy2 -n mylv myvg
echo "已成功建立邏輯卷mylv"
echo "------------------------"
lvs
echo "------------------------"
echo "你想對新分區設定什麼類型的檔案系統?有以下選項:"
echo "A:ext4檔案系統"
echo "B:xfs檔案系統"
read -p "請輸入你的選擇:" repy3
case $repy3 in
a|A)
mkfs.ext4 /dev/myvg/mylv
echo "該分區将被挂載在 "/mnt/mylv" 下"
m=`ls /mnt/|grep mylv | wc -l`
if [ $m -eq 0 ];then
mkdir /mnt/mylv
fi
echo "/dev/myvg/mylv /mnt/mylv ext4 defaults 0 0" >> /etc/fstab
mount -a
df -Th
;;
b|B)
mkfs.xfs -f /dev/myvg/mylv
echo "該分區将被挂載在 "/mnt/mylv" 下"
m=`ls /mnt/|grep mylv | wc -l`
if [ $m -eq 0 ];then
mkdir /mnt/mylv
fi
echo "/dev/myvg/mylv /mnt/mylv xfs defaults 0 0" >> /etc/fstab
mount -a
df -Th
;;
*)
echo "你的輸入有誤!!"
esac
七、将一塊硬碟分區,然後分區設定為虛拟卷
#! /bin/bash
# Author:謝公子
# Date:2018-10-13
# Function:建立一個分區,并做成邏輯卷
cat /proc/partitions > old
read -p "請輸入你要分區的硬碟(寫絕對路徑,如:/dev/sda):" A
if [ -e $A ];then
echo "true"
else
echo "該裝置不存在!!"
exit
fi
read -p "請輸入你要建立的磁盤分區類型(這裡隻能是主分區,預設按回車即可):" B
read -p "請輸入分區數字,範圍1-4,預設從1開始,預設按回車即可:" C
read -p "請輸入扇區起始表号,預設按回車即可:" D
read -p "請輸入你要分區的分區大小(格式:如 +5G ):" E
read -p "請輸入你要劃分為邏輯卷的分區盤符(預設回車即可):" Z
fdisk $A << EOF
n
p
$C
$D
$E
t
$Z
8e
p
w
EOF
echo "一個标準LVM的分區已經建立好!!"
partprobe $A
echo "-------------------------------"
cat /proc/partitions
cat /proc/partitions > new
F=`diff new old | grep "<" | awk '{print $5}'`
echo "-------------------------------"
echo $F
pvcreate /dev/$F
echo "該硬碟已做成實體卷!"
n=`vgs | grep myvg |wc -l`
if [ $n -eq 0 ];then
vgcreate myvg /dev/$F
echo "該實體卷已加入卷組myvg中"
else
vgextend myvg /dev/$F
echo "該實體卷已加入卷組myvg中"
vgs
free=`vgs| awk '$1~/myvg/{print}'|awk '{print $7}'`
echo "該卷組剩餘的空間大小為:$free "
lvs
exit
fi
vgs
free=`vgs| awk '$1~/myvg/{print}'|awk '{print $6}'`
echo "該卷組剩餘的空間大小為:$free "
read -p "請輸入你要建立邏輯卷的大小(如:1G):" repy2
lvcreate -L $repy2 -n mylv myvg
echo "已成功建立邏輯卷mylv"
echo "------------------------"
lvs
echo "------------------------"
echo "你想對新分區設定什麼類型的檔案系統?有以下選項:"
echo "A:ext4檔案系統"
echo "B:xfs檔案系統"
read -p "請輸入你的選擇:" G
case $G in
a|A)
mkfs.ext4 /dev/myvg/mylv
echo "該分區将被挂載在 "/mnt/$F" 下"
m=`ls /mnt/|grep $F | wc -l`
if [ $m -eq 0 ];then
mkdir /mnt/$F
fi
echo "/dev/myvg/mylv /mnt/$F ext4 defaults 0 0" >> /etc/fstab
mount -a
df -Th
;;
b|B)
mkfs.xfs -f /dev/myvg/mylv
echo "該分區将被挂載在 "/mnt/$F" 下"
m=`ls /mnt/|grep $F | wc -l`
if [ $m -eq 0 ];then
mkdir /mnt/$F
fi
echo "/dev/myvg/mylv /mnt/$F xfs defaults 0 0" >> /etc/fstab
mount -a
df -Th
;;
*)
echo "你的輸入有誤!!"
esac
更多腳本:https://www.jb51.net/article/54488.htm