自動創建虛擬機
#!/bin/bash
read -p '請輸入后端盤路徑' BACK_DISK
cd /var/lib/libvirt/images/ #cd到虛擬機磁盤存放目錄
qemu-img create -f qcow2 -b $BACK_DISK ${1}.img 20G #創建磁盤鏡像;.node_base.qcow2(后端盤)
sed "s,node_base,$1," .node_base.xml > /etc/libvirt/qemu/${1}.xml #創建對應xml檔案
virsh define /etc/libvirt/qemu/${1}.xml #定義xml檔案
virsh start $1 #啟動虛擬機
定期備份/var/log日志檔案
#!/bin/bash
tar -zcf log-`date +%Y%m%d`.tar.gz /var/log
系統設定:crontab -e 00 03 * * 5 /root/腳本名
實時監控本機記憶體和硬碟空間,發送郵件進行警報
#!/bin/bash
while :
do
DISK_SIZE=$(df /|awk '/\//{print $4}') #呼叫本機可用磁盤空間
MEM_SIZE=$(free|awk '/Mem/{print $4}') #呼叫本機可用記憶體
if [ $DISK_SIZE -le 512000 -a $MEM_SIZE -le 1024000 ];then
mail -s '警報' root << EOF
資源不足,請及時充值.
EOF
fi
sleep 1
done
檢測主機開機與關機狀態
#!/bin/bash
for i in {1..254}
do
ping -c 2 -i 0.3 -W 1 192.168.4.$i &> /dev/null
if [ $? -eq 0 ];then
echo "192.168.4.$i is up"
else
echo "192.168.4.$i is down"
fi
done
實時顯示eth0網卡發送與接收的資料包流量
#!/bin/bash
while :
do
echo "eth0網卡流量資訊如下:"
ifconfig eth0 | grep "RX pack" | awk '{print $5}' #接收的資料流量包
ifconfig eth0 | grep "TX pack" | awk '{print $5}' #發送的資料流量包
sleep 1 #每秒重繪一次
done
使用用戶串列檔案創建用戶且初始密碼為123456
#!/bin/bash
#$1為存放用戶串列的檔案
for i in `cat $1`
do
useradd $i
echo 123456 | passwd --stdin $i &> /dev/null
done
顯示連接本機的遠程ip
#!/bin/bash
netstat -atn | awk 'NR>2{print $5}' | awk '{print $1}' | sort -rn | uniq -c
統計一定時間段內所有訪問Apache服務器的的請求個數
#!/bin/bash
awk -F "[ /:]" '$7":"$8>="13:30" && $7":"$8<="14:30"' /var/log/httpd/access_log |wc -l'
統計一定時間段內所有訪問Apache服務器的客戶端ip
#!/bin/bash
awk -F "[/:]" '$7":"$8>="13:30" && $7":"$8<="14:30"{print $1}' /var/log/httpd/access_log
統計每個遠程ip訪問了本機Apache幾次
#!/bin/bash
awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' /var/log/httpd/access_log
切割Nginx日志檔案
#!/bin/bash
logs_path="/usr/local/nginx/logs"
mv ${logs_path}access.log ${logs_path}access_$(date +%Y%m%d).log
lill -USER1 $(cat /usr/local/nginx/logs/nginx.pid)
linux命令列:crontab -e 0 1 * * * /data/scripts/腳本名
檢測mysql資料庫連接數量
#!/bin/bash
log_file="/var/log/mysql_count.log"
user=root
passwd=123456
while :
do
sleep 2
count=`mysqladmin -u"$user" -p"$passwd" status | awk '{print $4}'`
echo "`date +%Y%m%d` 并發連接數為:${count}." >> $log_file
done
非互動式生成SSH秘鑰檔案
#!/bin/bash
rm -rf ~/.ssh/id_rsa*
ssh-keygen -t RSA -N '' -f ~/.ssh/id_rsa
回圈測驗用戶名與密碼是否正確
#!/bin/bash
for i in {1..3}
do
read -p "請輸入用戶名" user
read -p "請輸入密碼" pass
if [ "$user" == 'tom' -a "$pass" == '123456' ];then
echo "登陸成功"
exit
else
echo "請重新輸入用戶名及密碼"
fi
done
echo "登錄失敗"
列出本機可登陸用戶的密碼
#!/bin/bash
user=$(awk -F: '/bash$/{print $1}' /etc/passwd)
for i in $user
do
awk -F: -v x=$i '$1==x{print $1,$2}' /etc/shadow
done
統計linux行程相關數量資訊
#!/bin/bash
running=0
sleeping=0
stoped=0
zombie=0
#在 proc 目錄下所有以數字開始的都是當前計算機正在運行的行程的行程 PID
#每個 PID 編號的目錄下記錄有該行程相關的資訊
for pid in `ls /proc/[1-9]*`
do
procs=$[procs+1]
stat=$(awk '{print $3}' $pid/stat)
#每個 pid 目錄下都有一個 stat 檔案,該檔案的第 3 列是該行程的狀態資訊
case $stat in
R)
running=$[running+1];;
T)
stoped=$[stoped+1];;
S)
sleeping=$[sleeping+1];;
Z)
zombie=$[zombie+1];;
esac
done
echo "行程統計資訊如下"
echo "總行程數量為:$procs"
echo "Running 行程數為:$running"
echo "Stoped 行程數為:$stoped"
echo "Sleeping 行程數為:$sleeping"
echo "Zombie 行程數為:$zombie"
使用腳本開啟關閉虛擬機
#!/bin/bash
#腳本通過呼叫 virsh 命令實作對虛擬機的管理,如果沒有該命令,需要安裝 libvirt-client 軟體包
#$1 是腳本的第 1 個引數,$2 是腳本的第 2 個引數
#第 1 個引數是你希望對虛擬機進行的操作指令,第 2 個引數是虛擬機名稱
case $1 in
list)
virsh list --all;;
start)
virsh start $2;;
stop)
virsh destroy $2;;
enable)
virsh autostart $2;;
disable)
virsh autostart --disable $2;;
*)
echo "Usage:$0 list"
echo "Usage:$0 [start|stop|enable|disable] VM_name"
cat << EOF
list 顯示虛擬機串列
start 啟動虛擬機
stop 關閉虛擬機
enable 設定虛擬機為開機自啟
disable 關閉虛擬機開機自啟功能
EOF;;
esac
不登錄虛擬機,修改其網卡ip地址
#!/bin/bash
#腳本在不登陸虛擬機的情況下,修改虛擬機的 IP 地址資訊;在某些環境下,虛擬機沒有 IP 或 IP 地址與真實主機不在一個網段;真實主機在沒有 virt-manger 圖形的情況下,遠程連接虛擬機很麻煩.該腳本可以解決類似的問題.
read -p "請輸入虛擬機名稱:" name
if virsh domstate $name | grep -q running ;then
echo "修改虛擬機網卡資料,需要關閉虛擬機"
virsh destroy $name
fi
mountpoint="/media/virtimage"
[ ! -d $mountpoint ]&& mkdir $mountpoint
guestmount -d $name -i $mountpoint
read -p "請輸入需要修改的網卡名稱:" dev
read -p "請輸入 IP 地址:" addr
#判斷原本網卡組態檔中是否有 IP 地址,有,就修改該 IP,沒有,就添加一個新的 IP 地址
if grep -q "IPADDR" $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev ;then
sed -i "/IPADDR/s/=.*/=$addr/" $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev
else
echo "IPADDR=$addr" >> $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev
fi
破解虛擬機密碼
#!/bin/bash
read -p "請輸入虛擬機名稱:" name
if virsh domstate $name |grep -q running ;then
echo "破解,需要關閉虛擬機"
virsh destroy $name
fi
mountpoint="/media/virtimage"
[ ! -d $mountpoint ]&& mkdir $mountpoint
guestmount -d $name -i $mountpoint
#將 passwd 中密碼占位符號 x 洗掉,該賬戶即可實作無密碼登陸系統
sed -i "/^root/s/x//" $mountpoint/etc/passwd
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/29201.html
標籤:服務器
