#!/bin/sh # 公用方法 # 显示欢迎信息 welcome () { echo "==欢迎使用machete_installer==" echo "本脚本为开源项目,网址:https://git.filesite.io/filesite/machete_installer" echo "它将指引并安装docker desktop和machete的docker镜像" echo "并完成machete的基本配置,在你的电脑上创建1个相册网站" echo "" } # 显示结束语 theend () { echo "" echo "==感谢使用machete_installer==" echo "本脚本为开源项目,网址:https://git.filesite.io/filesite/machete_installer" echo "个性化配置请参考官方文档:" echo "https://filesite.io/view/?id=2907455e19bee577f8ed4c9fac83ae95" echo "" } # 显示卸载信息 goodbye () { echo "" echo "==即将卸载machete,不会影响本地保存的照片、视频==" echo "* 停止machete容器" echo "* 删除machete容器" echo "* 删除桌面快捷方式" echo "" } # 获取用户桌面绝对路径 getHomePath () { path=`cd ~/ && pwd` echo $path } # 获取本地局域网ip地址 getLocalIp () { ipstr=`ifconfig -a | grep -v grep | grep '192.168'` echo "${ipstr}" | cut -d ' ' -f 2 } # 获取mac mini的cpu芯片型号信息 getCpuInfo () { cpu_info=`sysctl -n machdep.cpu.brand_string` echo "你的电脑芯片型号:${cpu_info}" } # 获取电脑cpu类型 # 返回值:1 = intel芯片,2 = 苹果芯片 getCpuType () { cpu_info=`sysctl -n machdep.cpu.brand_string` if [[ $cpu_info == *"Intel"* ]]; then return 1 #intel芯片 fi return 2 #默认为苹果芯片 } # 检测是否已经安装了docker # 返回值:0 - 未安装,1 - 已安装 detectDockerInstalled () { res=`command -v docker | wc -l` if [ $res -gt 0 ]; then return 1 fi return 0 } # 检测docker desktop是否启动 # 返回值:0 - 未启动,1 - 已启动 detectDockerStarted () { res=`docker images | grep -v grep | grep "IMAGE ID" | wc -l` if [ $res -gt 0 ]; then return 1 fi return 0 } # 检测docker image是否下载 # 返回值:0 - 未下载,1 - 已下载 detectDockerImageExists () { imgName=$1 if [ -z "${imgName}" ]; then imgName="filesite/machete" fi res=`docker images | grep -v grep | grep "${imgName}" | grep 'latest' | wc -l` if [ $res -gt 0 ]; then return 1 fi return 0 } # 检测docker container是否启动 # 返回值:0 - 未启动,1 - 已启动 detectDockerContainerExists () { containerName=$1 if [ -z "${containerName}" ]; then containerName="machete_album" fi res=`docker ps -a | grep -v grep | grep "${containerName}" | wc -l` if [ $res -gt 0 ]; then return 1 fi return 0 } # 启动相册容器,端口:8181 # @album_name 容器名 # @album_path 相册保存路径 dockerStartAlbumContainer () { album_name=$1 album_path=$2 if [ -z "${album_name}" ]; then album_name="machete_album" fi if [ -z "${album_path}" ]; then homePath=`getHomePath` album_path="${homePath}/Desktop/Album_by_filesite" fi docker run --name "${album_name}" \ -p 8181:80 \ -v "${album_path}:/var/www/machete/www/girls/" \ -itd filesite/machete:latest \ beauty } # 启动视频容器,端口:8182 # @blog_name 容器名 # @blog_path 视频保存路径 dockerStartVideoContainer () { blog_name=$1 blog_path=$2 if [ -z "${blog_name}" ]; then blog_name="machete_videos" fi if [ -z "${blog_path}" ]; then homePath=`getHomePath` blog_path="${homePath}/Desktop/Videos_by_filesite" fi docker run --name "${blog_name}" \ -p 8182:80 \ -v "${blog_path}:/var/www/machete/www/videos/" \ -itd filesite/machete:latest \ videoblog } # 检测域名是否能连接 # 返回值:0 - 不能连接,1 - 可连接 detectDomainCanConnect () { domain=$1 if [ -z "${domain}" ]; then echo "Usage: detectDomainCanConnect domain" echo "" exit 1 fi ping_res=`ping -c 3 "${domain}"` if [[ $ping_res == *"100.0% packet loss"* ]]; then return 0 fi return 1 } # 获取docker desktop下载地址 # 参数:connect_res,可选值:[0, 1] getDockerDesktopDownloadUrl () { getCpuType cup_type=$? dmgLink_docker="https://desktop.docker.com/mac/main/arm64/Docker.dmg" dmgLink="https://static.jialuoma.cn/docker_desktop/docker_arm64.dmg" if [ $cup_type -eq 1 ]; then dmgLink_docker="https://desktop.docker.com/mac/main/amd64/Docker.dmg" dmgLink="https://static.jialuoma.cn/docker_desktop/docker_amd64.dmg" fi connect_res=$1 if [ $connect_res -eq 0 ]; then echo "${dmgLink}" else #原网址 echo "${dmgLink_docker}" fi } # 下载docker desktop downloadDockerDesktop () { link=$1 if [ -z "${link}" ]; then echo "Usage: downloadDockerDesktop url" echo "" exit 1 fi echo "docker desktop下载链接:${link}" echo "即将在浏览器中打开docker desktop的下载链接并开始下载" echo "请在docker desktop下载完成后,双击打开安装" open "${link}" } # 创建桌面快捷方式 createShortcuts () { ip=`getLocalIp` type=$1 if [ "${type}" == "album" ]; then echo "[InternetShortcut]" > ~/Desktop/相册.url echo "URL=http://${ip}:8181" >> ~/Desktop/相册.url else echo "[InternetShortcut]" > ~/Desktop/视频.url echo "URL=http://${ip}:8182" >> ~/Desktop/视频.url fi } # 删除桌面快捷方式 deleteShortcuts () { type=$1 if [ "${type}" == "album" ]; then rm -f ~/Desktop/相册.url else rm -f ~/Desktop/视频.url fi } # 升级docker容器里的代码到最新版 upgradeMacheteInContainers () { name=$1 if [ "${name}" == "album" ]; then docker container cp template/custom_config_beauty.json machete_album:/var/www/machete/runtime/custom_config.json docker exec -it machete_album /var/www/machete/bin/upgrade.sh else docker container cp template/custom_config_videoblog.json machete_vlog:/var/www/machete/runtime/custom_config.json docker exec -it machete_vlog /var/www/machete/bin/upgrade.sh fi } # 下载演示照片 downloadSamplesPhotos () { savePath=$1 if [ -z "${savePath}" ]; then savePath="~/Desktop/Album_by_filesite/" fi echo "下载演示照片..." url="https://static.jialuoma.cn/samples/sample_photos.tar.gz" curl -o sample_photos.tar.gz "${url}" tar -zxvf sample_photos.tar.gz cp -r sample_photos/* $savePath echo "下载演示音乐mp3..." url="https://static.jialuoma.cn/samples/melody.mp3" curl -o melody.mp3 "${url}" cp melody.mp3 $savePath } # 下载演示视频 downloadSamplesVideos () { savePath=$1 if [ -z "${savePath}" ]; then savePath="~/Desktop/Videos_by_filesite/" fi echo "下载演示视频..." url="https://static.jialuoma.cn/samples/sample_videos.tar.gz" curl -o sample_videos.tar.gz "${url}" tar -zxvf sample_videos.tar.gz cp -r sample_videos/* $savePath }