-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfileUpload.sh
175 lines (164 loc) · 5.85 KB
/
fileUpload.sh
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#!/bin/bash
# Upload files to AWS S3 bucket
variables()
{
if [[ $# -eq 0 ]] ; then
echo 'Please provide application name!'
return 1;
else
case "$1" in
signup_ms)
echo "Setting $1 variables";
declare -g BUCKET_NAME="prod_logs-backup";
declare -g BUCKET_LOG_PATH="signup/access/";
declare -g SSH_USER="ubuntu";
declare -g SSH_SERVER="x.x.x.x";
declare -g PREVIOUS_DAY=`TZ=MYT+16 date +%Y-%m-%d`;
declare -g LOG_FILE="signup_access_$PREVIOUS_DAY.gz";
declare -g REMOTE_LOG_PATH=("/home/ubuntu/logs/signup/$LOG_FILE");
declare -g LOCAL_LOG_PATH=("/home/ubuntu/logs/signup/access/");
declare -g APP_NAME="signup_ms";
;;
login_ms)
echo "Setting $1 variables";
declare -g BUCKET_NAME="prod_logs-backup";
declare -g BUCKET_LOG_PATH="login/application/";
declare -g SSH_USER="centos";
declare -g SSH_SERVER="x.x.x.x";
declare -g PREVIOUS_DAY=`TZ=MYT+16 date +%Y-%m-%d`;
declare -g LOG_FILE="login_app_$PREVIOUS_DAY.gz";
declare -g REMOTE_LOG_PATH=("/home/ubuntu/logs/login/$LOG_FILE");
declare -g LOCAL_LOG_PATH=("/home/ubuntu/logs/login/application/");
declare -g APP_NAME="login_ms";
;;
payment_ms)
echo "Setting $1 variables";
declare -g BUCKET_NAME="prod_logs-backup";
declare -g BUCKET_LOG_PATH="payment/access/";
declare -g SSH_USER="log";
declare -g SSH_SERVER="x.x.x.x";
declare -g PREVIOUS_DAY=`TZ=MYT+16 date +%Y-%m-%d`;
declare -g LOG_FILE="payment_access$PREVIOUS_DAY.gz";
declare -g REMOTE_LOG_PATH=("/home/ubuntu/logs/payment/$LOG_FILE");
declare -g LOCAL_LOG_PATH=("/home/ubuntu/logs/payment/access/");
declare -g APP_NAME="payment_ms";
;;
*) echo 'Please provide correct application name!' ;;
esac
return 0;
fi
}
ping()
{
if /usr/local/bin/aws s3api head-bucket --bucket "$BUCKET_NAME" 2>/dev/null; then
echo "s3 bucket found"
if ssh -q $SSH_USER@$SSH_SERVER exit 2>/dev/null; then
echo "ssh connectivity available"
return 0;
else
return 1;
fi
else
return 1;
fi
}
validation()
{
if ssh $SSH_USER@$SSH_SERVER [[ -f "$REMOTE_LOG_PATH" ]]; then
echo "file_exists"
if ssh $SSH_USER@$SSH_SERVER [[ -s "$REMOTE_LOG_PATH" ]]; then
echo "file has something";
return 0;
else
echo "file is empty";
return 1;
fi
else
{
echo "File not found!"
return 1;
}
fi
}
download()
{
echo "Downloading file from remote server"
if rsync -avzh --progress -e ssh $SSH_USER@$SSH_SERVER:"$REMOTE_LOG_PATH" "$LOCAL_LOG_PATH" 2>/dev/null; then
return 0;
else
return 1;
fi
}
upload()
{
echo "Log Uploading"
if /usr/local/bin/aws s3 cp "$LOCAL_LOG_PATH"/"$LOG_FILE" "s3://$BUCKET_NAME/$BUCKET_LOG_PATH" 2>/dev/null; then
rm "$LOCAL_LOG_PATH"/"$LOG_FILE"
return 0;
else
return 1;
fi
}
alert()
{
echo "Mattermost/Slack Notification"
if [[ $# -eq 0 ]] ; then
echo 'No alert type!'
exit 0
else
case "$1" in
success)
echo "success alert"
local escapedText=":white_check_mark: Application - $APP_NAME || Log File - $LOCAL_LOG_PATH/$LOG_FILE || S3-Bucket - $BUCKET_NAME/$BUCKET_LOG_PATH";
;;
upload_error)
echo "error alert"
escapedText=":x: Application - $APP_NAME || Log File - $LOCAL_LOG_PATH/$LOG_FILE || S3-Bucket - $BUCKET_NAME/$BUCKET_LOG_PATH || Reason - upload failed";
;;
download_error)
echo "error0 alert"
escapedText=":x: Application - $APP_NAME || Log File - $LOCAL_LOG_PATH/$LOG_FILE || S3-Bucket - $BUCKET_NAME/$BUCKET_LOG_PATH || Reason - download failed";
;;
validation_error)
echo "validation alert"
escapedText=":warning: Application - $APP_NAME || Log File - $LOCAL_LOG_PATH/$LOG_FILE || S3-Bucket - $BUCKET_NAME/$BUCKET_LOG_PATH || Reason - validation failed";
;;
ping_error)
echo "ping alert"
escapedText=":signal_strength: Application - $APP_NAME || Log File - $LOCAL_LOG_PATH/$LOG_FILE || S3-Bucket - $BUCKET_NAME/$BUCKET_LOG_PATH || Reason - ping failed";
;;
variable_error)
echo "ping alert"
escapedText=":signal_strength: Application - $APP_NAME || Log File - $LOCAL_LOG_PATH/$LOG_FILE || S3-Bucket - $BUCKET_NAME/$BUCKET_LOG_PATH || Reason - variable failed";
;;
*) echo 'Alert type not supported!' ;;
esac
fi
echo "$escapedText";
curl -X POST -H 'Content-type: application/json' --data '{"text": "'"$escapedText"'"}' https://chat.example.in/hooks/abcdsabdjbs324nmgndmsgb
}
controller()
{
if variables $1; then
if ping; then
if validation; then
if download; then
if upload; then
alert success
else
alert upload_error
fi
else
alert download_error
fi
else
alert validation_error
fi
else
alert ping_error
fi
else
alert variable_error
fi
}
controller $1