forked from inverse-inc/packetfence
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathasterfusion_pf_upgrade.sh
More file actions
129 lines (103 loc) · 3.23 KB
/
Copy pathasterfusion_pf_upgrade.sh
File metadata and controls
129 lines (103 loc) · 3.23 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
126
127
128
#!/bin/bash
usage() {
cat << EOF
Usage:
-h|--help: display this help and exit
<export> export packetfence database and config
example: /usr/local/pf/asterfusion_pf_upgrade.sh export
<import> import packetfence database and config
example: /usr/local/pf/asterfusion_pf_upgrade.sh import
EOF
return 2
}
stop_pf(){
echo "Stop packetfence service."
STATUS=$(systemctl is-active packetfence-config)
if [ "$STATUS" = "active" ]; then
/usr/local/pf/bin/pfcmd service pf stop
systemctl stop packetfence-config
fi
}
export_db(){
echo "Export database."
mysql -u root -e "GRANT RELOAD, PROCESS ON *.* TO 'pf'@'localhost'; FLUSH PRIVILEGES;"
/usr/local/pf/addons/backup-and-maintenance.sh > /dev/null
latest_db=$(ls -1t /root/backup/packetfence-db-dump-innobackup-*.xbstream.gz | head -n 1)
gzip -dk $latest_db > /dev/null
mkdir -p /root/backup/restore/
pushd /root/backup/restore/
mv /root/backup/packetfence-db-dump-innobackup-*.xbstream /root/backup/restore/
mbstream -x < packetfence-db-dump-innobackup-*.xbstream > /dev/null
rm packetfence-db-dump-innobackup-*.xbstream
mariabackup --prepare --target-dir=./ > /dev/null
}
export_conf(){
echo "Export config."
/usr/local/pf/addons/full-import/export.sh /tmp/export.tgz > /dev/null
}
import_db(){
echo "Import database."
systemctl stop packetfence-mariadb
pkill -9 -f mariadbd || echo 1 > /dev/null
mv /var/lib/mysql/ "/var/lib/mysql-`date +%s`"
mkdir /var/lib/mysql
cd /root/backup/restore/
mariabackup --innobackupex --defaults-file=/usr/local/pf/var/conf/mariadb.conf --move-back --force-non-empty-directories ./
chown -R mysql: /var/lib/mysql
systemctl start packetfence-mariadb
mysql_upgrade
systemctl restart packetfence-mariadb
mysql -u root -e "USE pf; TRUNCATE TABLE node_current_session;"
}
tar_config(){
mkdir -p /tmp/asterfuser_pf_upgrade_res
cp -r /root/backup/restore /tmp/asterfuser_pf_upgrade_res
cp /tmp/export.tgz /tmp/asterfuser_pf_upgrade_res
cp /usr/local/pf/asterfusion_pf_upgrade.sh /tmp/asterfuser_pf_upgrade_res
tar zcvf /tmp/asterfuser_pf_upgrade_res.tar.gz /tmp/asterfuser_pf_upgrade_res > /dev/null
echo "Export successfully: /tmp/asterfuser_pf_upgrade_res.tar.gz"
}
import_conf(){
echo "Import config"
/usr/local/pf/addons/full-import/import.sh --conf -f /tmp/export.tgz
}
start_pf(){
echo "Start packetfence service."
/usr/local/pf/bin/pfcmd pfconfig clear_backend
/usr/local/pf/bin/pfcmd configreload hard
/usr/local/pf/bin/pfcmd service pf restart
echo "Upgrade successfully."
}
main() {
case $1 in
export)
stop_pf
export_db
export_conf
tar_config
;;
import)
mkdir -p /root/backup/restore/
cp -r ./restore/* /root/backup/restore/
cp export.tgz /tmp/
import_db
import_conf
start_pf
;;
*)
usage
;;
esac
return $?
}
case $1 in
-h|--help|help)
usage
exit $?
;;
*)
main $@
exit $?
;;
esac
exit $?