mirror of https://github.com/fengyuhetao/shell.git
2016-05-23
parent
b3f56ab59f
commit
4b6e1524e6
|
@ -0,0 +1,12 @@
|
|||
#!/bin/bash
|
||||
|
||||
function myprint()
|
||||
{
|
||||
printf "%-16s - %s", $1, $4
|
||||
}
|
||||
|
||||
function myrand(limit)
|
||||
{
|
||||
return int(limit * rand())
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
BEGIN{FS="\n"; RS=""}
|
||||
{
|
||||
myprint()
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
for (( i=1; i<=4; i++ ))
|
||||
do
|
||||
touch $i.sh
|
||||
chmod 764 $i.sh
|
||||
echo "#!/bin/bash" > $i.sh
|
||||
done
|
|
@ -0,0 +1,2 @@
|
|||
BEGIN{FS=","; print n}
|
||||
{print $n}
|
|
@ -0,0 +1,4 @@
|
|||
10
|
||||
5
|
||||
123
|
||||
50
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/bash
|
||||
#使用内建变量
|
||||
|
||||
gawk 'BEGIN {testing="This is a test"; print testing; testing=45; print testing}'
|
||||
|
||||
#处理数字值
|
||||
|
||||
gawk 'BEGIN{x=4; x= x*2+3; printx}'
|
||||
|
||||
#处理数组
|
||||
gawk 'BEGIN{capital["Ill"] = "SprintField"; print capital["Ill"]}'
|
||||
|
||||
#遍历数组变量
|
||||
gawk 'BEGIN{
|
||||
var["a"] = 1
|
||||
var["g"] = 2
|
||||
var["m"] = 3
|
||||
for( test in var)
|
||||
{
|
||||
print "Index:",test,"- Value:",var[test]
|
||||
}
|
||||
}'
|
||||
|
||||
print "------"
|
||||
|
||||
#删除数组变量
|
||||
gawk 'BEGIN{
|
||||
var["a"] = 1
|
||||
var["g"] = 2
|
||||
for (test in var)
|
||||
{
|
||||
print "Index:",test," - Value:", var[test]
|
||||
}
|
||||
delete var["g"]
|
||||
|
||||
print "----"
|
||||
|
||||
for (test in var)
|
||||
{
|
||||
print "Index;",test," - Value:", var[test]
|
||||
}
|
||||
}'
|
|
@ -0,0 +1,57 @@
|
|||
#!/bin/bash
|
||||
#正则表达式
|
||||
|
||||
gawk 'BEGIN{FS=","}
|
||||
/11/{print $1}
|
||||
' test
|
||||
|
||||
#if-else语句
|
||||
gawk '{
|
||||
if($1 > 20)
|
||||
{
|
||||
x=$1*20
|
||||
print x
|
||||
}
|
||||
else
|
||||
{
|
||||
x=$1/2
|
||||
print x
|
||||
}
|
||||
}' test
|
||||
|
||||
#while 语句
|
||||
gawk '{
|
||||
total = 0
|
||||
i=1
|
||||
while(i<4)
|
||||
{
|
||||
total+=$i
|
||||
i++
|
||||
}
|
||||
avg = total/3
|
||||
print "Average:".avg
|
||||
}' test
|
||||
|
||||
|
||||
#do-while语句
|
||||
gawk '{
|
||||
total=0
|
||||
i=1
|
||||
do
|
||||
{
|
||||
total += $i
|
||||
i++
|
||||
}while(total < 150)
|
||||
print total }' test
|
||||
|
||||
|
||||
#for语句
|
||||
gawk '{
|
||||
total = 0
|
||||
for (i=1; i<4; i++)
|
||||
{
|
||||
total+=$i
|
||||
}
|
||||
avg = total/3
|
||||
print "Average:".avg
|
||||
}' test
|
|
@ -0,0 +1,12 @@
|
|||
#!/bin/bash
|
||||
#gawk 自定义函数
|
||||
|
||||
gawk '
|
||||
function myprint()
|
||||
{
|
||||
printf "%-16s - %s\n", $1, $4
|
||||
}
|
||||
BEGIN{FS="\n"; RS=""}
|
||||
{
|
||||
myprint()
|
||||
}' test
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
#使用函数库和gawk脚本
|
||||
|
||||
gawk -f gawk函数库 -f gawk脚本 test
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
# send data to the the table in the MYSQL database
|
||||
|
||||
MYSQL=`which mysql`
|
||||
|
||||
if [ $# -ne 2 ]
|
||||
then
|
||||
echo "Usage:mtest2 emplid lastname firstname salary"
|
||||
else
|
||||
#脚本变量一定要用双引号,字符串变量使用单引号
|
||||
statement=" insert into em_admin values(NULL, '$1', $2)"
|
||||
$MYSQL emwjs -u test <<EOF
|
||||
$statement
|
||||
EOF
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
echo Data successfully added
|
||||
else
|
||||
echo Problem adding data
|
||||
fi
|
||||
fi
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/bash
|
||||
|
||||
#redirecting SQL output to a variable
|
||||
|
||||
MYSQL=`which mysql`
|
||||
dbs=`$MYSQL emwjs -u test -Bse 'show tables;'`
|
||||
for db in $dbs
|
||||
do
|
||||
echo $db
|
||||
done
|
||||
|
||||
|
||||
#使用xml输出数据
|
||||
$MYSQL emwjs -u test -X -e 'select * from em_admin'
|
||||
|
||||
#使用table标签输出数据
|
||||
$MYSQL emwjs -u test -H -e 'select * from em_admin'
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
#!/bin/bash
|
||||
|
||||
#连接数据库
|
||||
mysql=`which mysql
|
||||
`
|
||||
#发送单个命令
|
||||
$mysql emwjs -u test -e "show databases;"
|
||||
|
||||
#发送多个命令
|
||||
$mysql emwjs -u test <<EOF
|
||||
show tables;
|
||||
select * from em_admin;
|
||||
EOF
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
|
||||
#h将模式空间保存到保持空间
|
||||
#H将模式空间附加到保持空间
|
||||
#g将保持空间复制到模式空间
|
||||
#G将保持空间保存到模式空间
|
||||
#x交换模式空间和保持空间的内容
|
||||
|
||||
sed -n '/first/{
|
||||
h
|
||||
p
|
||||
n
|
||||
p
|
||||
g
|
||||
p
|
||||
}' test
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
|
||||
#多个空格只保留一个
|
||||
#sed '/./,/^$/!d' test
|
||||
|
||||
#删除开头的空白行
|
||||
#sed '/./,$!d' test
|
||||
|
||||
#删除结尾的空白行
|
||||
sed '{
|
||||
:start
|
||||
/^\n*$/{$d; N; b start}
|
||||
}' test
|
||||
|
||||
#删除html标签
|
||||
#有问题
|
||||
#s/<.*>//g
|
||||
|
||||
#sed 's/<[^>]*>//g' test1
|
||||
|
||||
#sed 's/<[^>]*>//g;/^$/d' test1
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
# shell wrapper for sed editor script to reverse lines
|
||||
|
||||
sed -n '{
|
||||
1!G
|
||||
h
|
||||
$p
|
||||
}' $1
|
|
@ -0,0 +1,8 @@
|
|||
!/bin/bash
|
||||
|
||||
#排除命令,使本来起作用的命令不起作用
|
||||
|
||||
sed -n '/heade/!p' test
|
||||
|
||||
#反转文本文件
|
||||
sed -n '{1!G ; h; $p}' test
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
#and符号,代表替换命令中的匹配模式,不管预定义模式是什么文本,都可以用and符号替换,and符号会提取匹配替换命令中指定替换模式中的所有字符串
|
||||
echo "The cat sleeps in his hat" | sed 's/.at/"&"/g'
|
||||
|
||||
#替换单独的单词
|
||||
echo "The System Administrator manual" | sed 's/\(System\) Administrator/\1 user/'
|
||||
|
||||
#在长数字中插入逗号
|
||||
echo "1234567" | sed '{:start; s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/; t start}'
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
#测试,如果测试成功,如果没有标签,sed会跳转到结尾,如果有标签,就跳转到标签,如果测试失败,则不会跳转
|
||||
sed -n '{s/first/matched/; t; s/This is the/No match on/}' test
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
sed '=' test | sed 'N; s/\n/ /'
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
#跳转到指定脚本
|
||||
sed '{/first/b jump1; s/This is the/No jump on/; :jump1; s/This is the/Jump here on/}' test
|
||||
|
||||
#跳转到开头,删除每一个逗号,并保证删除最后一个逗号之后,跳出循环
|
||||
sed -n '{:start; s/,//1p; /,/b start}' test
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
#输出末尾10行数据
|
||||
|
||||
sed '{
|
||||
:start
|
||||
$q
|
||||
N
|
||||
11,$D
|
||||
b start
|
||||
}' /etc/passwd
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
|
||||
# add commas to numbers in factorial answer
|
||||
|
||||
factorial=1
|
||||
counter=1
|
||||
number=$1
|
||||
|
||||
while [ $counter -le $number ]
|
||||
do
|
||||
factorial=$[ $factorial * $counter ]
|
||||
counter=$[ $counter + 1 ]
|
||||
done
|
||||
|
||||
result=`echo $factorial | sed '{
|
||||
:start
|
||||
s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/
|
||||
t start
|
||||
}'`
|
||||
|
||||
echo "The result is $result"
|
|
@ -0,0 +1,24 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Capture_Stats - Gather System Performance Statistics
|
||||
#
|
||||
#########################################################
|
||||
#
|
||||
# Set Script Variables
|
||||
#
|
||||
REPORT_FILE=/home/tiandi/Documents/capstats.csv
|
||||
DATE=`date +%m/%d/%y`
|
||||
TIME=`date +%k:%M:%S`
|
||||
#
|
||||
############################################################
|
||||
#
|
||||
USERS=`uptime | sed 's/user.*$//' | gawk '{print $NF}'`
|
||||
LOAD=`uptime | gawk '{print $NF}'`
|
||||
#
|
||||
FREE=`vmstat 1 2 | sed -n '/[0-9]/p' | sed -n '2p' | gawk '{print $4}'`
|
||||
IDLE=`vmstat 1 2 | sed -n '/[0-9]/p' | sed -n '2p' | gawk '{print $15}'`
|
||||
#
|
||||
##########################################
|
||||
#
|
||||
echo "$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE" >> $REPORT_FILE
|
||||
#
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
uptime | sed 's/user.*$//' | gawk '{print $NF}'
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
#查看僵尸进程
|
||||
ps -al | gawk '{print $2,$4}' | grep Z
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
#查看内存使用百分比
|
||||
free | sed -n '2p' | gawk 'x = int(( $3 / $2 ) * 100) {print x}' | sed 's/$/%/'
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
#查看磁盘实用百分比
|
||||
df -h /dev/sda1 | sed -n '/% \//p' | gawk '{ print $5 }'
|
|
@ -0,0 +1,45 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Report_Stats - Generates Rpt from Captured Perf Stats
|
||||
#
|
||||
############################################################
|
||||
#
|
||||
# Set Script Variables
|
||||
#
|
||||
REPORT_FILE=/home/tiandi/Documents/capstats.csv
|
||||
TEMP_FILE=/home/tiandi/Documents/capstats.html
|
||||
#
|
||||
DATE=`date +%m/%d/%y`
|
||||
#
|
||||
MAIL=`which mutt`
|
||||
MAIL_TO=tiandi
|
||||
#
|
||||
###############################################################3
|
||||
#
|
||||
# Create Report Header
|
||||
#
|
||||
echo "<html><body><h2>Report for $DATE</h2>" > $TEMP_FILE
|
||||
echo "<table border=\"1\">" >> $TEMP_FILE
|
||||
echo "<tr><td>Date</td><td>Time</td><td>Users</td>" >> $TEMP_FILE
|
||||
echo "<td>Load</td><td>Free Memory</td><td>%CPU Idle</td></tr>" >> $TEMP_FILE
|
||||
#
|
||||
###############################################################
|
||||
#
|
||||
# Place Performance Stats in Report
|
||||
#
|
||||
cat $REPORT_FILE | gawk -F, '{
|
||||
printf "<tr><td>%s</td><td>%s</td><td>%s</td>", $1, $2, $3;
|
||||
printf "<td>%s</td><td>%s</td><td>%s</td>\n</tr>\n", $4, $5, $6;
|
||||
}' >> $TEMP_FILE
|
||||
#
|
||||
echo "</table></body></html>" >> $TEMP_FILE
|
||||
#
|
||||
################################################################
|
||||
#
|
||||
# Mail Performance Report & Clean up
|
||||
#
|
||||
#$MAIL -a $TEMP_FILE -s "Performance Report $DATE"
|
||||
#-- $MAIL_TO < /dev/null
|
||||
#
|
||||
#rm -r $TEMP_FILE
|
||||
#
|
|
@ -0,0 +1,92 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Snapshot_Stats - produces a report for system stats
|
||||
#
|
||||
##############################################
|
||||
#
|
||||
# Set Script Variables
|
||||
#
|
||||
DATE=`date +%m%d%y`
|
||||
DISKS_TO_MONITOR="/dev/sda1"
|
||||
MAIL=`which mutt`
|
||||
MAIL_TO=tiandi
|
||||
REPORT=/home/tiandi/Documents/Snapshot_Stats_$DATE.rpt
|
||||
#
|
||||
####################################################
|
||||
#
|
||||
# Create Report File
|
||||
#
|
||||
exec 3>&1 # Save file descriptor
|
||||
#
|
||||
exec 1> $REPORT # direct output to rpt file
|
||||
#
|
||||
###################################################
|
||||
#
|
||||
echo
|
||||
echo -e "\t\tDaily System Report"
|
||||
echo
|
||||
#
|
||||
###################################################
|
||||
# Date Stamp the Report
|
||||
#
|
||||
echo -e "Today is" `date +%m%d%y`
|
||||
echo
|
||||
#
|
||||
##################################################
|
||||
#
|
||||
#1) Gather System Uptime Statistics
|
||||
#
|
||||
echo -e "System has been \c"
|
||||
uptime | sed -n '/,/s/,/ /gp' | gawk '{if($4 == "days" || $4 == "day") {print $2,$3,$4,$5} else {print $2,$3}}'
|
||||
#
|
||||
#################################################
|
||||
#
|
||||
#2) Gather Disk Usage Statistics
|
||||
#
|
||||
echo
|
||||
for DISK in $DISK_TO_MONITOR # loop to check disk space
|
||||
do
|
||||
echo -e "$DISK usage: \c"
|
||||
df -h $DISK | sed -n '/% \//p' | gawk '{ print $5 }'
|
||||
done
|
||||
#
|
||||
##################################################################
|
||||
#
|
||||
#3) Gather Memory Usage Statstics
|
||||
#
|
||||
echo
|
||||
echo -e "Memory Usage: \c"
|
||||
#
|
||||
free | sed -n '2p' | gawk 'x = int(($3 / $2) * 100) {print x}' | sed 's/$/%/'
|
||||
#
|
||||
###############################################################
|
||||
#
|
||||
#4) Gather Number of Zombie Processes
|
||||
#
|
||||
echo
|
||||
ZOMBIE_CHECK=`ps -al | gawk '{print $2,$4}' | grep Z`
|
||||
#
|
||||
if [ "$ZOMBIE_CHECK" = "" ]
|
||||
then
|
||||
echo "No Zombie Process on System at this Time"
|
||||
else
|
||||
echo "Current System Zombie Processes"
|
||||
ps -al | gawk '{print $2,$4}' | grep Z
|
||||
fi
|
||||
echo
|
||||
#
|
||||
#####################################################################
|
||||
#
|
||||
# Restore File Descriptor & Mail Report
|
||||
#
|
||||
exec 1>&3 # Restore output to STDOUT
|
||||
#
|
||||
#$MAIL -a $REPORT -s "System Sstatistics Report for $DATE"
|
||||
#-- $MAIL_TO < /dev/null
|
||||
#
|
||||
###############################################################
|
||||
#
|
||||
# Clean up
|
||||
#
|
||||
#rm -f $REPORT
|
||||
#
|
|
@ -0,0 +1,82 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Update_Problem - updates problem record in database
|
||||
#
|
||||
############################################################
|
||||
#
|
||||
# Determine sql location & set variable
|
||||
#
|
||||
MYSQL=`which mysql`" Problem_Trek -u root"
|
||||
#
|
||||
##############################################################
|
||||
#
|
||||
# Obtain Record Id
|
||||
#
|
||||
if [ $# -eq 0 ] # Check if id number was passed
|
||||
then # If not passed ask for it
|
||||
#
|
||||
# Check if any unfinished records exist.
|
||||
RECORDS_EXIST=`$MYSQL -Bse 'SELECT id_number FROM problem_logger where fixed_date="0000-00-00" OR prob_solutions=""'`
|
||||
#
|
||||
if [ "$RECORDS_EXIST" != "" ]
|
||||
then
|
||||
echo
|
||||
echo "The following record(s) need updating..."
|
||||
$MYSQL <<EOF
|
||||
SELECT id_number, report_date, prob_symptoms FROM problem_logger WHERE fixed_date="0000-00-00" OR prob_solutions=""\G
|
||||
EOF
|
||||
fi
|
||||
#
|
||||
echo
|
||||
echo "What is the ID number for the"
|
||||
echo -e "problem you want to update?: \c"
|
||||
read ANSWER
|
||||
ID_NUMBER=$ANSWER
|
||||
else
|
||||
ID_NUMBER=$1
|
||||
fi
|
||||
#
|
||||
##########################################################
|
||||
#
|
||||
# Obtain Solution (aka Fixed) Date
|
||||
#
|
||||
echo
|
||||
echo -e "Was Problem solved today? (y/n) \c"
|
||||
read ANSWER
|
||||
#
|
||||
case $ANSWER in
|
||||
y|Y|YES|yes|Yes|yEs|yeS|YEs|yES)
|
||||
#
|
||||
FIXED_DATE=`date +%Y%m%d`
|
||||
;;
|
||||
*)
|
||||
# if answer is anything but "yes", ask for date
|
||||
echo
|
||||
echo -e "What was the date of resolution? [YYYYMMDD] \c"
|
||||
read ANSWER
|
||||
#
|
||||
FIXED_DATE=$ANSWER
|
||||
;;
|
||||
esac
|
||||
#
|
||||
########################################################
|
||||
#
|
||||
# Acquire problem solution
|
||||
#
|
||||
echo
|
||||
echo -e "Birefly describe the problem solution: \c"
|
||||
#
|
||||
read ANSWER
|
||||
PROB_SOLUTIONS=$ANSWER
|
||||
#
|
||||
########################################################
|
||||
#
|
||||
# Update problem record
|
||||
#
|
||||
echo
|
||||
echo "Problem record updated as follows:"
|
||||
echo
|
||||
$MYSQL <<EOF
|
||||
UPDATE problem_logger SET prob_solutions="$PROB_SOLUTIONS", fixed_date=$FIXED_DATE where id_number=$ID_NUMBER;
|
||||
SELECT * FROM problem_logger WHERE id_number=$ID_NUMBER\G
|
||||
EOF
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
for (( i=1; i<=4; i++ ))
|
||||
do
|
||||
touch $i.sh
|
||||
chmod 764 $i.sh
|
||||
echo "#!/bin/bash" > $i.sh
|
||||
done
|
|
@ -0,0 +1,41 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Find_Problem - finds problem records using keywords
|
||||
#
|
||||
###########################################################
|
||||
#
|
||||
# Determine sql location & set variable
|
||||
#
|
||||
MYSQL=`which mysql`" Problem_Trek -u root"
|
||||
#
|
||||
##########################################################
|
||||
#
|
||||
# Obtain Keyword(s)
|
||||
#
|
||||
if [ -n "$1" ] # Check if a keyword was passed
|
||||
then # Grab all the passed keywords
|
||||
#
|
||||
KEYWORDS=$@ # Grab all the params as separate words, same string
|
||||
#
|
||||
else # Keyword(s) not passed, Ask for them
|
||||
echo
|
||||
echo "What keywords would you like to search for?"
|
||||
echo -e "Please separate words by a space: \c"
|
||||
read ANSWER
|
||||
KEYWORDS=$ANSWER
|
||||
fi
|
||||
#
|
||||
#######################################################
|
||||
#
|
||||
# Find problem record
|
||||
#
|
||||
echo
|
||||
echo "The following was found using keywords: $KEYWORDS"
|
||||
echo
|
||||
#
|
||||
KEYWORDS=`echo $KEYWORDS | sed 's/ /|/g'`
|
||||
#
|
||||
$MYSQL <<EOF
|
||||
SELECT * FROM problem_logger WHERE prob_symptoms REGEXP '($KEYWORDS)' OR prob_solutions REGEXP '($KEYWORDS)'\G
|
||||
EOF
|
||||
#
|
|
@ -0,0 +1,65 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Record_Problem - records system problems in database
|
||||
#
|
||||
###########################################################
|
||||
#
|
||||
# Determine mysql location & put into variable
|
||||
#
|
||||
MYSQL=`which mysql`" Problem_Trek -u root"
|
||||
#
|
||||
###########################################################
|
||||
#
|
||||
# Create Record Id & Report_Date
|
||||
#
|
||||
#ID_NUMBER=`date +%y%m%d%H%M`
|
||||
#
|
||||
REPORT_DATE=`date +%y%m%d`
|
||||
#
|
||||
############################################################
|
||||
#
|
||||
# Acquire information to put into table
|
||||
#
|
||||
echo
|
||||
echo -e "Birefly describe the problem & its symptoms: \c"
|
||||
#
|
||||
read ANSWER
|
||||
PROB_SYMPTOMS=$ANSWER
|
||||
#
|
||||
# Set Fixed Date & Problem Solution to null for now
|
||||
#
|
||||
FIXED_DATE=0
|
||||
PROB_SOLUTIONS=""
|
||||
#
|
||||
#############################################################
|
||||
#
|
||||
# Insert acquired information into table
|
||||
#
|
||||
echo
|
||||
echo "Problem recorded as follows:"
|
||||
echo
|
||||
id=$($MYSQL -e "INSERT INTO problem_logger VALUES (null,$REPORT_DATE,$FIXED_DATE,'$PROB_SYMPTOMS','$PROB_SOLUTIONS');SELECT LAST_INSERT_ID() id")
|
||||
id=`echo $id | gawk '{print $2}'`
|
||||
$MYSQL <<EOF
|
||||
SELECT * FROM problem_logger where id_number=$id\G
|
||||
EOF
|
||||
#
|
||||
#############################################################
|
||||
#
|
||||
# Check if want to enter a solution now
|
||||
#
|
||||
echo
|
||||
echo -e "Do you have a solution yet?(y/n) \c"
|
||||
read ANSWER
|
||||
#
|
||||
case $ANSWER in
|
||||
y|Y|YES|yes|Yes|yEs|yeS|YEs|yES)
|
||||
./Update_Problem.sh $id
|
||||
#
|
||||
;;
|
||||
*)
|
||||
# if answer is anything but yes, just exit script
|
||||
;;
|
||||
esac
|
||||
#
|
||||
############################################################
|
|
@ -0,0 +1,66 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Daily_Archive - Archive designated files & directories
|
||||
######################################################
|
||||
#
|
||||
# Gather Current Date
|
||||
#
|
||||
DATE=`date +%y%m%d`
|
||||
#
|
||||
# Set Archive File Name
|
||||
#
|
||||
FILE=archive$DATE.tar.gz
|
||||
#
|
||||
# Set Configuration and Destination File
|
||||
#
|
||||
CONFIG_FILE=/home/tiandi/archive/Files_To_Backup
|
||||
DESTINATION=/home/tiandi/archive/$FILE
|
||||
#
|
||||
##################### Main Script ###############
|
||||
#
|
||||
# Check Backup Config file exists
|
||||
#
|
||||
if [ -f $CONFIG_FILE ] #Make sure the config file still exists
|
||||
then
|
||||
echo
|
||||
else
|
||||
echo
|
||||
echo "$CONFIG_FILE does not exist."
|
||||
echo "Backup not completed due to missing Configuration file"
|
||||
echo
|
||||
exit
|
||||
fi
|
||||
#
|
||||
# Build the names of all the files to backup
|
||||
#
|
||||
FILE_NO=1 # Start on Line 1 of Config file.
|
||||
exec < $CONFIG_FILE # Redirect Std Input to name of Config File
|
||||
#
|
||||
read FILE_NAME # Read 1st record
|
||||
#
|
||||
while [ $? -eq 0 ]
|
||||
do
|
||||
# Make sure the file or directory exists.
|
||||
if [ -f $FILE_NAME -o -d $FILE_NAME ]
|
||||
then
|
||||
# If file exists, add its name to the lists
|
||||
FILE_LIST="$FILE_LIST $FILE_NAME"
|
||||
else
|
||||
# If file doesn't exist, issue warning
|
||||
echo
|
||||
echo "$FILE_NAME, does not exist."
|
||||
echo "Obviously, I will not include it in this archive."
|
||||
echo "It is listed on line $FILE_NO of the config file."
|
||||
echo "Continuing to build archive file."
|
||||
echo
|
||||
fi
|
||||
#
|
||||
FILE_NO=$[ $FILE_NO + 1 ] # Increase Line/File number by one
|
||||
read FILE_NAME # Read next record.
|
||||
done
|
||||
###########################################################
|
||||
#
|
||||
# Backup the files and Compress Archive
|
||||
#
|
||||
tar -czf $DESTINATION $FILE_LIST 2> /dev/null
|
||||
#
|
|
@ -0,0 +1,73 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Hourly_Archive - Every hour create an archive
|
||||
######################################################
|
||||
#
|
||||
# Set Configuration and Destination File
|
||||
#
|
||||
CONFIG_FILE=/home/tiandi/archive/Files_To_Backup
|
||||
#
|
||||
# Gather Current Date,Month & Time
|
||||
#
|
||||
DAY=`date +%d`
|
||||
MONTH=`date +%m`
|
||||
TIME=`date +%k%M`
|
||||
#
|
||||
# Set Base Archive Destination Location
|
||||
#
|
||||
BASEDEST=/home/tiandi/archive/hourly
|
||||
#
|
||||
# Create Archive Destination Directory
|
||||
mkdir -p $BASEDEST/$MONTH/$DAY
|
||||
#
|
||||
# Build Archive Destination File Name
|
||||
DESTINATION=$BASEDEST/$MONTH/$DAY/archive$TIME.tar.gz
|
||||
#
|
||||
##################### Main Script ###############
|
||||
#
|
||||
# Check Backup Config file exists
|
||||
#
|
||||
if [ -f $CONFIG_FILE ] #Make sure the config file still exists
|
||||
then
|
||||
echo
|
||||
else
|
||||
echo
|
||||
echo "$CONFIG_FILE does not exist."
|
||||
echo "Backup not completed due to missing Configuration file"
|
||||
echo
|
||||
exit
|
||||
fi
|
||||
#
|
||||
# Build the names of all the files to backup
|
||||
#
|
||||
FILE_NO=1 # Start on Line 1 of Config file.
|
||||
exec < $CONFIG_FILE # Redirect Std Input to name of Config File
|
||||
#
|
||||
read FILE_NAME # Read 1st record
|
||||
#
|
||||
while [ $? -eq 0 ]
|
||||
do
|
||||
# Make sure the file or directory exists.
|
||||
if [ -f $FILE_NAME -o -d $FILE_NAME ]
|
||||
then
|
||||
# If file exists, add its name to the lists
|
||||
FILE_LIST="$FILE_LIST $FILE_NAME"
|
||||
else
|
||||
# If file doesn't exist, issue warning
|
||||
echo
|
||||
echo "$FILE_NAME, does not exist."
|
||||
echo "Obviously, I will not include it in this archive."
|
||||
echo "It is listed on line $FILE_NO of the config file."
|
||||
echo "Continuing to build archive file."
|
||||
echo
|
||||
fi
|
||||
#
|
||||
FILE_NO=$[ $FILE_NO + 1 ] # Increase Line/File number by one
|
||||
read FILE_NAME # Read next record.
|
||||
done
|
||||
###########################################################
|
||||
#
|
||||
# Backup the files and Compress Archive
|
||||
#
|
||||
tar -czf $DESTINATION $FILE_LIST 2> /dev/null
|
||||
#
|
|
@ -0,0 +1,247 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Delete_User - Automates the 4 steps to remove an account
|
||||
#
|
||||
#################################################################
|
||||
#
|
||||
# Define Functions
|
||||
#
|
||||
#################################################################
|
||||
function get_answer {
|
||||
#
|
||||
unset ANSWER
|
||||
ASK_COUNT=0
|
||||
#
|
||||
while [ -z "$ANSWER" ] # while no answer is given, keep asking
|
||||
do
|
||||
ASK_COUNT=$[ $ASK_COUNT + 1 ]
|
||||
#
|
||||
case $ASK_COUNT in # If user gives no answer in time allowed
|
||||
2)
|
||||
echo
|
||||
echo "Please answer the question."
|
||||
echo
|
||||
;;
|
||||
3)
|
||||
echo
|
||||
echo "One last try... please answer the question."
|
||||
echo
|
||||
;;
|
||||
4)
|
||||
echo
|
||||
echo "Since you refuse to answer the question..."
|
||||
echo "exiting program."
|
||||
echo
|
||||
#
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
#
|
||||
echo
|
||||
#
|
||||
if [ -n "$LINE2" ]
|
||||
then
|
||||
echo $LINE1 # Print 2 lines
|
||||
echo -e $LINE2" \c"
|
||||
else # Print 1 line
|
||||
echo -e $LINE1" \c"
|
||||
fi
|
||||
#
|
||||
# Allow 60 seconds to answer before time-out
|
||||
read -t 60 ANSWER
|
||||
done
|
||||
#
|
||||
# Do a little variable clean-up
|
||||
#
|
||||
unset LINE1
|
||||
unset LINE2
|
||||
#
|
||||
} #end of get_answer function
|
||||
#
|
||||
#################################################################
|
||||
function process_answer {
|
||||
#
|
||||
case $ANSWER in
|
||||
y|Y|YES|yes|yEs|yeS|YEs|yES)
|
||||
# If user answers "yes".do nothing.
|
||||
;;
|
||||
*)
|
||||
# If user answers anything but "yes", exit script
|
||||
echo
|
||||
echo $EXIT_LINE1
|
||||
echo $EXIT_LINE2
|
||||
echo
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
#
|
||||
# Do a little variable clean-up
|
||||
unset EXIT_LINE1
|
||||
unset EXIT_LINE2
|
||||
#
|
||||
} #End of process_answer function
|
||||
#
|
||||
################################################################
|
||||
#
|
||||
# End of Function Definitions
|
||||
#
|
||||
############### Main Script #################################
|
||||
#
|
||||
# Get name of User Account to check
|
||||
#
|
||||
echo "Step #1 - Determine User Account name to delete "
|
||||
echo
|
||||
LINE1="Please enter the username of the user"
|
||||
LINE2="account you wish to delete from system:"
|
||||
get_answer
|
||||
USER_ACCOUNT=$ANSWER
|
||||
#
|
||||
# Double check with script user that this is the correct User Account
|
||||
#
|
||||
LINE1="Is $USER_ACCOUNT the user account"
|
||||
LINE2="you wish to delete from the system?[ y/n ]:"
|
||||
get_answer
|
||||
#
|
||||
############################################################
|
||||
#
|
||||
# Check that USER_ACCOUNT is really an account on the system
|
||||
#
|
||||
USER_ACCOUNT_RECORD=$(cat /etc/passwd | grep -w $USER_ACCOUNT)
|
||||
#
|
||||
if [ $? -eq 1 ] # If the account is not found, exit script
|
||||
then
|
||||
echo
|
||||
echo "Account, $USER_ACCOUNT, not found."
|
||||
echo "Leaving the script..."
|
||||
echo
|
||||
exit
|
||||
fi
|
||||
#
|
||||
echo
|
||||
echo "I found this record:"
|
||||
echo $USER_ACCOUNT_RECORD
|
||||
echo
|
||||
#
|
||||
LINE1="Is this the correct User Account?[y/n]:"
|
||||
get_answer
|
||||
#
|
||||
#
|
||||
# Call process_answer function:
|
||||
# if user answers anything but "yes", exit script
|
||||
#
|
||||
EXIT_LINE1="Because the account, $USER_ACCOUNT, is not "
|
||||
EXIT_LINE2="the one you wish to delete, we are leaving the script..."
|
||||
process_anser
|
||||
#
|
||||
##############################################################
|
||||
#
|
||||
# Search for any running processes that belong to the User Account
|
||||
#
|
||||
echo
|
||||
echo "Step #2 - Find process on system belonging to user account"
|
||||
echo
|
||||
echo "$USER_ACCOUNT has the following processes running: "
|
||||
echo
|
||||
#
|
||||
ps -u $USER_ACCOUNT #List the processes running
|
||||
#
|
||||
case $? in
|
||||
1) # No processes running for this User Account
|
||||
#
|
||||
echo "There are no processes for this account currently running."
|
||||
echo
|
||||
;;
|
||||
0) # Processes running for this User Account.
|
||||
# Ask Script User if wants us to kill the processes.
|
||||
#
|
||||
unset ANSWER # I think this line is not needed
|
||||
LINE1="Would you like me to kill the process(es)? [y/n]:"
|
||||
get_answer
|
||||
#
|
||||
case $ANSWER in
|
||||
y|Y|YES|yes|Yes|yEs|yeS|YEs|yES) # if user answer "yes",
|
||||
#kill User Account processes
|
||||
#
|
||||
echo
|
||||
#
|
||||
# Clean-up temp file upon signals
|
||||
#
|
||||
trap "rm $USER_ACCOUNT_Running_Process.rpt" SIGTERM SIGINT SIGQUIT
|
||||
#
|
||||
# List user processes running
|
||||
ps -u $USER_ACCOUNT > $USER_ACCOUNT_Running_Process.rpt
|
||||
#
|
||||
exec < $USER_ACCOUNT_Running_Process.rpt # Make report Std Input
|
||||
#
|
||||
read USER_PROCESS_REC # First record will be blank
|
||||
read USER_PROCESS_REC
|
||||
#
|
||||
while [ $? -eq 0 ]
|
||||
do
|
||||
# obtain PID
|
||||
USER_PID=$(echo $USER_PROCESS_REC | cut -d " " -f1 )
|
||||
kill -9 $USER_PID
|
||||
echo "Killed process $USER_PID"
|
||||
read USER_PROCESS_REC
|
||||
done
|
||||
#
|
||||
echo
|
||||
#
|
||||
rm $USER_ACCOUNT_Running_Process.rpt # Remove temp report
|
||||
;;
|
||||
*) # If user answers anything but "yes", do not kill.
|
||||
echo
|
||||
echo "Will not kill the process(es)."
|
||||
echo
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
###################################################################################
|
||||
#
|
||||
# Create a report of all files owned by User Account
|
||||
#
|
||||
echo
|
||||
echo "Step #3 - Find files on system belonging to user account"
|
||||
echo
|
||||
echo "Creating a report of all files owned by $USER_ACCOUNT."
|
||||
echo
|
||||
echo "It is recommended that you backup/archive these files."
|
||||
echo "and then do one of two things:"
|
||||
echo " 1) Delete the files"
|
||||
echo " 2) Change the files' ownership to a current user account."
|
||||
echo
|
||||
echo "Please wait. This may take a while..."
|
||||
#
|
||||
REPORT_DATE=`date +%y%m%d`
|
||||
REPORT_FILE=$USER_ACCOUNT"_Files_"$REPORT_DATE".rpt"
|
||||
#
|
||||
find / -user $USER_ACCOUNT > $REPORT_FILE 2>/dev/null
|
||||
#
|
||||
echo
|
||||
echo "Report is complete."
|
||||
echo "Name of report: $REPORT_FILE"
|
||||
echo "Location of report: `pwd`"
|
||||
echo
|
||||
################################################################
|
||||
#
|
||||
# Remove User Account
|
||||
echo
|
||||
echo "Step #4 - Remove user account"
|
||||
echo
|
||||
#
|
||||
LINE1="Do you wish to remove $USER_ACCOUNT's account from system? [y/n]:"
|
||||
get_answer
|
||||
#
|
||||
# Cass process_answer function:
|
||||
# if user answers anything but "yes", exit script
|
||||
#
|
||||
EXIT_LINE1="Since you do not wish to remove the user account."
|
||||
EXIT_LINE2="$USER_ACCOUNT at this time, exiting the script..."
|
||||
process_answer
|
||||
#
|
||||
userdel $USER_ACCOUNT # delete user account
|
||||
echo
|
||||
echo "User account, $USER_ACCOUNT, has been removed"
|
||||
echo
|
||||
#
|
|
@ -0,0 +1,31 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Big_Users - find big disk space users in various directories
|
||||
#############################################################
|
||||
#Parameters for script
|
||||
#
|
||||
CHECK_DIRECTORIES="/var/log /home" #directories to check
|
||||
#
|
||||
######################### Main Script #######################
|
||||
#
|
||||
DATE=$(date '+%m%d%y') #Date for report file
|
||||
#
|
||||
exec > disk_space_$DATE.rpt #Make report file Std Output
|
||||
#
|
||||
echo "Top Ten Disk Space Usage" #Report header for while report
|
||||
echo "for $CHECK_DIRECTORIES Directories"
|
||||
#
|
||||
for DIR_CHECK in $CHECK_DIRECTORIES #loop to du directories
|
||||
do
|
||||
echo ""
|
||||
echo "The $DIR_CHECK Directory:" #Title header for each directory
|
||||
#
|
||||
# Creating a listing of top ten disk space users
|
||||
du -S $DIR_CHECK 2>/dev/null |
|
||||
sort -rn |
|
||||
sed '{11,$D; =}' |
|
||||
sed 'N; s/\n/ /' |
|
||||
gawk '{printf $1 ":" "\t" $2 "\t" $3 "\n"}'
|
||||
#
|
||||
done #End of for loop for du directories
|
||||
#
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
#download latest cURL file automatically
|
||||
|
||||
curl -s -o /home/tiandi/curl
|
||||
http://curl.haxx.se/download/curl
|
Loading…
Reference in New Issue