-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathskeleton.sh
More file actions
executable file
·126 lines (107 loc) · 2 KB
/
skeleton.sh
File metadata and controls
executable file
·126 lines (107 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/bin/bash
# skeleton for creating scripts
# basic vars
FORCE="false"
DEBUG="false"
DRY_RUN="false"
SSH="ssh -o ConnectTimeout=5 -o PasswordAuthentication=no -o StrictHostKeyChecking=no"
SCP="scp -o ConnectTimeout=5 -o PasswordAuthentication=no -o StrictHostKeyChecking=no -q"
LOCK_FILE="/tmp/`basename $0`.lock"
DATE=`date +%Y%m%d-%H%M` # format: year month day hours minute
EXIT_CODES="0"
INFO_LOG="/var/log/`basename $0`.log"
ERROR_LOG="/var/log/`basename $0`.log"
# vars
#FULL_HOSTNAME=`hostname -f 2>/dev/null || hostname`
# base functions
do_usage(){
cat <<EOF
skeleton for creating scripts
Usage:
$0 [-fdDh]
Options:
-f -- force mod
-d -- dry run
-D -- debug
-h -- print this help page
EOF
exit 1
}
do_debug(){
if "$DEBUG"; then
echo $@
fi
}
do_run(){
CMD="$@"
if "$DRY_RUN"; then
echo "$CMD"
EXIT_CODE="$?"
EXIT_CODES=$(($EXIT_CODES + $EXIT_CODE))
else
sh -c "$CMD"
EXIT_CODE="$?"
EXIT_CODES=$(($EXIT_CODES + $EXIT_CODE))
fi
# uncomment this if you need stop programm after CMD return error code
# do_check_exit_code
}
do_check_exit_code(){
if ! [ x"$EXIT_CODES" = x0 ]; then
echo "exit code $CMD not 0"
do_unlock
exit 1
fi
}
do_unlock(){
rm -f $LOCK_FILE
}
# get options
while getopts fdDh OPTS; do
case $OPTS in
f) FORCE="true";;
d) DRY_RUN="true";;
D) DEBUG="true";;
h|?) do_usage;;
esac
done
shift $((OPTIND-1))
# this you can set dynamic vars if you need
# dynamic vars
#NAME="$1"
#EMAIL="$2"
#
# after this, you can check vars
# check dynamic vars
#if [[ -z $NAME || -z $EMAIL ]]; then
# do_usage
#fi
#if $FORCE; then
# echo "force mode"
#else
# echo "You are sure to do it this ? (Yes\No)"
# read ANSWER
# case $ANSWER in
# Y*|y*)
# :
# ;;
# *)
# echo "Skipped"
# continue
# ;;
# esac
#fi
# сheck lock file
if [ -f $LOCK_FILE ]; then
echo "$0 already running"
echo "lock file $LOCK_FILE"
exit 1
else
touch $LOCK_FILE
fi
# action
# unlock
do_unlock
# разделитель в цикле - перевод строки
# IFS=$'\n'
# for LINE in $LINES;do