為了方便的從多台伺服器獲取日誌(不同機器的相同日誌),寫了個簡易指令碼專門用於批量拷貝伺服器日誌到執行指令碼的機器中。該指令碼包含2個檔案bscp.sh和bscp.exp。
使用方式:
sh bscp.sh
執行後,程式提示輸入目標機器的密碼(這裡需要多台機器的ssh使用者名稱密碼是相同的,且之前需要建立過ssh連線,就是不需要再進行yes/no互動)
bscp.sh主程式:
[plain]
view plain
copy
#!/bin/bash
if [ $# != 3 ] ;then
echo "usage:"
exit 1
fi
stty -echo #隱藏密碼輸出
read -p "please enter target hosts' passwd of $1:" passwd
stty echo
echo
dirpath=`dirname $0`
#echo $dirpath
$dirpath/bscp.exp $1 $2 $3 $passwd
expect指令碼:
[plain]
view plain
copy
#!/usr/bin/expect -f
set user [lindex $argv 0]
set hosts [lindex $argv 1]
set logfile [lindex $argv 2]
set passwd [lindex $argv 3]
set timeout 10
set hostlist [split $hosts ","] # 把host字串分割成列表
set slashidx [expr [string last / $logfile] + 1]
set filename [string range $logfile $slashidx end] # 獲取日誌檔名
foreach h $hostlist
expect "*%*"
puts "\rtransmit successfully!"
set timeout 10
} }
乙個栗子:
執行獲取3台機日誌:
./bscp.sh ultrani host1,host2,host3 /home/admin/***/logs/access.log
日誌字尾以機器名結尾:
access.log.host1
access.log.host2
access.log.host3
shell指令碼(批量建立使用者) 走了多遠,又是多遠
shell指令碼批量建立使用者 有些面試題中會問到批量建立使用者的題目,大體是用迴圈去進行建立,但有時也會有一些額外的附加條件,一起來看看今天的知識點吧。需求 1 自定義使用者,不要有特殊字元 user01,user02 2 最多建立100個使用者,要求數字等位對齊。例 1 99 01,02,03....
批量pingIP指令碼
方法一 將ip位址寫入ip.txt root localhost cat ping.sh bin bash cat ip.txt while read line doip echo line awk ping c 3 w 2 ip dev null if eq 0 then echo ip live...
批量備份指令碼
寫個小指令碼紀念一下tee這個命令,批量備份http的源 執行命令如下 1 2 jason at xjx macin script fab f backup.py backup teebackup.log 輸出 生成已當前日期命名的xz壓縮包,例如 httpd 20160104.tar.xz 指令碼...