You've already forked CasaOS
mirror of
https://github.com/IceWhaleTech/CasaOS.git
synced 2025-07-09 23:45:31 +02:00
暂存
This commit is contained in:
301
shell/tools.sh
301
shell/tools.sh
@ -1,99 +1,202 @@
|
||||
#!/bin/bash
|
||||
Show(){
|
||||
local color=("$@") output grey green red reset
|
||||
if [[ -t 0 || -t 1 ]]
|
||||
then
|
||||
output='\e[0m\r\e[J' grey='\e[90m' green='\e[32m' red='\e[31m' reset='\e[0m'
|
||||
fi
|
||||
local left="${grey}[$reset" right="$grey]$reset"
|
||||
local ok="$left$green OK $right " failed="$left${red}FAILED$right "
|
||||
# Print color array from index $1
|
||||
Print(){
|
||||
[[ $1 == 1 ]]
|
||||
for ((i=$1; i<${#color[@]}; i++))
|
||||
do
|
||||
output+=${color[$i]}
|
||||
done
|
||||
echo -ne "$output$reset"
|
||||
}
|
||||
|
||||
if (( $1 == 0 )); then
|
||||
output+=$ok
|
||||
color+=('\n')
|
||||
Print 1
|
||||
#--------------------------------------------------------------------------------------
|
||||
# Failed
|
||||
# $2+ = message
|
||||
elif (( $1 == 1 )); then
|
||||
output+=$failed
|
||||
color+=('\n')
|
||||
Print 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function update(){
|
||||
# 终止守护者
|
||||
Watch=StopWatchmen
|
||||
monitoring=` ps -ef|grep "Watchmen" |grep -v grep| wc -l`
|
||||
target=` ps -ef|grep Watchmen|grep -v grep|awk '{print $2}'`
|
||||
if [ $monitoring -eq 0 ]
|
||||
then
|
||||
echo "Watchmen is not running "
|
||||
else
|
||||
echo "Watchmen is running, and kill it"
|
||||
kill -9 $target
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
Show 0 "$Watch"
|
||||
else
|
||||
Show 1 "$Watch"
|
||||
fi
|
||||
fi
|
||||
# 终止Oasis
|
||||
Oasis=StopOasis
|
||||
monitoring=` ps -ef|grep "build_linux" |grep -v grep| wc -l`
|
||||
target=` ps -ef|grep build_linux |grep -v grep|awk '{print $2}'`
|
||||
if [ $monitoring -eq 0 ]
|
||||
then
|
||||
echo "build_linux is not running "
|
||||
else
|
||||
echo "build_linux is running, and kill it"
|
||||
kill -9 $target
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
Show 0 "$Oasis"
|
||||
else
|
||||
Show 1 "$Oasis"
|
||||
fi
|
||||
fi
|
||||
# 删除原文件并拉取新的网址
|
||||
Update=Updating
|
||||
wget https://github.com/a624669980/xiange/releases/download/1.0.5/zip.zip -O ./zip.zip
|
||||
unzip -o zip.zip -d /Oasis/server/api/
|
||||
# 启动Oasis
|
||||
nohup /Oasis/server/api/zip/build_linux -c /Oasis/server/api/zip/conf/conf.ini >> /Oasis/log/install.log 2>&1 &
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
Show 0 "$Update"
|
||||
else
|
||||
Show 1 "$Update"
|
||||
fi
|
||||
if [ -f "zip.zip" ];
|
||||
then
|
||||
rm zip.zip
|
||||
else
|
||||
echo "not exist oasis.zip"
|
||||
fi
|
||||
Watchm=StartWatch
|
||||
nohup sh /Oasis/util/shell/Watchman.sh >> /Oasis/log/install.log 2>&1 &
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
Show 0 "$Watchm"
|
||||
else
|
||||
Show 1 "$Watchm"
|
||||
fi
|
||||
Show 0 "Successful"
|
||||
}
|
||||
update
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
#######################################
|
||||
# Custom printing function
|
||||
# Globals:
|
||||
# None
|
||||
# Arguments:
|
||||
# $1 0:OK 1:FAILED
|
||||
# message
|
||||
# Returns:
|
||||
# None
|
||||
#######################################
|
||||
|
||||
readonly CASA_PATH=/casaOS/server
|
||||
readonly casa_bin="casaos"
|
||||
|
||||
version=""
|
||||
|
||||
usage() {
|
||||
cat <<-EOF
|
||||
Usage: tool.sh [options]
|
||||
Valid options are:
|
||||
-r <version> verison of casaos
|
||||
-h show this help message and exit
|
||||
EOF
|
||||
exit $1
|
||||
}
|
||||
|
||||
show() {
|
||||
local color=("$@") output grey green red reset
|
||||
if [[ -t 0 || -t 1 ]]; then
|
||||
output='\e[0m\r\e[J' grey='\e[90m' green='\e[32m' red='\e[31m' reset='\e[0m'
|
||||
fi
|
||||
local left="${grey}[$reset" right="$grey]$reset"
|
||||
local ok="$left$green OK $right " failed="$left${red}FAILED$right " info="$left$green INFO $right "
|
||||
# Print color array from index $1
|
||||
Print() {
|
||||
[[ $1 == 1 ]]
|
||||
for ((i = $1; i < ${#color[@]}; i++)); do
|
||||
output+=${color[$i]}
|
||||
done
|
||||
echo -ne "$output$reset"
|
||||
}
|
||||
|
||||
if (($1 == 0)); then
|
||||
output+=$ok
|
||||
color+=('\n')
|
||||
Print 1
|
||||
|
||||
elif (($1 == 1)); then
|
||||
output+=$failed
|
||||
color+=('\n')
|
||||
Print 1
|
||||
|
||||
elif (($1 == 2)); then
|
||||
output+=$info
|
||||
color+=('\n')
|
||||
Print 1
|
||||
fi
|
||||
}
|
||||
|
||||
run_external_script() {
|
||||
show 0 "run_external_script"
|
||||
}
|
||||
|
||||
update() {
|
||||
trap 'echo -e "Aborted, error $? in command: $BASH_COMMAND"; trap ERR; return 1' ERR
|
||||
|
||||
# Not every platform has or needs sudo (https://termux.com/linux.html)
|
||||
((EUID)) && sudo_cmd="sudo"
|
||||
|
||||
target_os="unsupported"
|
||||
target_arch="unknown"
|
||||
install_path="/usr/local/bin"
|
||||
|
||||
# Fall back to /usr/bin if necessary
|
||||
if [[ ! -d $install_path ]]; then
|
||||
install_path="/usr/bin"
|
||||
fi
|
||||
|
||||
#########################
|
||||
# Which OS and version? #
|
||||
#########################
|
||||
casa_tmp_folder="casaos"
|
||||
|
||||
casa_dl_ext=".tar.gz"
|
||||
|
||||
# NOTE: `uname -m` is more accurate and universal than `arch`
|
||||
# See https://en.wikipedia.org/wiki/Uname
|
||||
unamem="$(uname -m)"
|
||||
case $unamem in
|
||||
*aarch64*)
|
||||
target_arch="arm64"
|
||||
;;
|
||||
*64*)
|
||||
target_arch="amd64"
|
||||
;;
|
||||
*86*)
|
||||
target_arch="386"
|
||||
;;
|
||||
*armv5*)
|
||||
target_arch="armv5"
|
||||
;;
|
||||
*armv6*)
|
||||
target_arch="armv6"
|
||||
;;
|
||||
*armv7*)
|
||||
target_arch="armv7"
|
||||
;;
|
||||
*)
|
||||
show 1 "Aborted, unsupported or unknown architecture: $unamem"
|
||||
return 2
|
||||
;;
|
||||
esac
|
||||
|
||||
unameu="$(tr '[:lower:]' '[:upper:]' <<<$(uname))"
|
||||
if [[ $unameu == *DARWIN* ]]; then
|
||||
target_os="darwin"
|
||||
elif [[ $unameu == *LINUX* ]]; then
|
||||
target_os="linux"
|
||||
elif [[ $unameu == *FREEBSD* ]]; then
|
||||
target_os="freebsd"
|
||||
elif [[ $unameu == *NETBSD* ]]; then
|
||||
target_os="netbsd"
|
||||
elif [[ $unameu == *OPENBSD* ]]; then
|
||||
target_os="openbsd"
|
||||
else
|
||||
show 1 "Aborted, unsupported or unknown OS: $uname"
|
||||
return 6
|
||||
fi
|
||||
|
||||
########################
|
||||
# Download and extract #
|
||||
########################
|
||||
show 2 "Downloading CasaOS for $target_os/$target_arch..."
|
||||
if type -p curl >/dev/null 2>&1; then
|
||||
net_getter="curl -fsSL"
|
||||
elif type -p wget >/dev/null 2>&1; then
|
||||
net_getter="wget -qO-"
|
||||
else
|
||||
show 1 "Aborted, could not find curl or wget"
|
||||
return 7
|
||||
fi
|
||||
|
||||
casa_file="${target_os}-$target_arch-casaos$casa_dl_ext"
|
||||
casa_tag="$(${net_getter} https://api.github.com/repos/IceWhaleTech/CasaOS/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g')"
|
||||
casa_url="https://github.com/IceWhaleTech/CasaOS/releases/download/$casa_tag/$casa_file"
|
||||
show 2 "$casa_url"
|
||||
# Use $PREFIX for compatibility with Termux on Android
|
||||
rm -rf "$PREFIX/tmp/$casa_file"
|
||||
|
||||
${net_getter} "$casa_url" >"$PREFIX/tmp/$casa_file"
|
||||
|
||||
show 2 "Extracting..."
|
||||
case "$casa_file" in
|
||||
*.zip) unzip -o "$PREFIX/tmp/$casa_file" -d "$PREFIX/tmp/" ;;
|
||||
*.tar.gz) tar -xzf "$PREFIX/tmp/$casa_file" -C "$PREFIX/tmp/" ;;
|
||||
esac
|
||||
|
||||
chmod +x "$PREFIX/tmp/$casa_tmp_folder/$casa_bin"
|
||||
|
||||
#stop service
|
||||
show 2 "Putting CasaOS in $install_path (may require password)"
|
||||
$sudo_cmd mv -f "$PREFIX/tmp/$casa_tmp_folder/$casa_bin" "$install_path/"
|
||||
show 2 "Putting CasaOS Shell file in $CASA_PATH (may require password)"
|
||||
#check shell folder
|
||||
local casa_shell_path=$CASA_PATH/shell
|
||||
|
||||
if [[ -d $casa_shell_path ]]; then
|
||||
rm -rf $casa_shell_path
|
||||
fi
|
||||
|
||||
$sudo_cmd mv -f $PREFIX/tmp/$casa_tmp_folder/shell "$CASA_PATH/shell"
|
||||
|
||||
# remove tmp files
|
||||
$sudo_cmd rm -rf $PREFIX/tmp/$casa_tmp_folder
|
||||
|
||||
if type -p $casa_bin >/dev/null 2>&1; then
|
||||
trap ERR
|
||||
run_external_script
|
||||
# $sudo_cmd systemctl start casaos
|
||||
$sudo_cmd systemctl restart casaos
|
||||
show 0 "CasaOS Successfully updated."
|
||||
return 0
|
||||
else
|
||||
show 1 "Something went wrong, CasaOS is not in your path"
|
||||
trap ERR
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
while getopts ":s:l:S:L:i:e:a:b:w:p:G:D:oOuUfgrczh" arg; do
|
||||
case "$arg" in
|
||||
r)
|
||||
version=$OPTARG
|
||||
update
|
||||
;;
|
||||
h)
|
||||
usage 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
Reference in New Issue
Block a user