新Deepin V20 自动挂载webdav脚本webdav与nfs内外网自动切换

新Deepin V20 自动挂载webdav脚本webdav与nfs内外网自动切换

Deepin webdav执行环境准备:

* Deepin V20 sudo 免密码修改/etc/sudoers (admin换成你的用户名及组):

sudo visudo
#文末增加如下2行
%admin ALL=(ALL) NOPASSWD: ALL
admin ALL=(ALL) NOPASSWD: ALL

如图

ctrl + o 保存,回车,然后ctrl+x退出

执行测试,内容正确,sudo免密

sudo cat /etc/sudoers

* 新Deepin V20 自动挂载webdav脚本webdav与nfs自动切换:

sudo mkdir /opt/mount_auto_boot
sudo cd /opt/mount_auto_boot
sudo touch mount_auto_boot.sh
sudo cat mount_auto_boot.sh
sudo dedit mount_auto_boot.sh

脚本内容如下:


#!/bin/bash
#mount local share dir
#sudo /usr/bin/mount --bind /media/admin/test /home/admin/Desktop/test
if [ "$?" != "0" ];then
    echo "mount local share dir fail...." >> /opt/mount_auto_boot/mount_auto_boot.log
else
    echo "mount local share dir....done" >> /opt/mount_auto_boot/mount_auto_boot.log
fi
#moount net_mount_point
#随便设置两个可以ping通的ip或者地址,联网检测。
IP1="180.76.76.76"
mount_count=1
#设置net_mount_point挂载目的地址:
#nfs 共享目录,如只使用webdav请注释掉:
nfs_net_dir='/volume1/data'
#webdav配置 5005为http 5006对应https端口
web_dav_port='5005'
mnt_net_mount_point='/media/admin/net_mount_point'
sudo mkdir $mnt_net_mount_point >/dev/null 2>&1
#内外网环境
#服务器内网ip
intra_ip='10.10.10.217'
#内网网关
intra_check_ip='10.10.10.10'
#外网域名
inter_ip='nas1.proyy.com'
while true
do
    df -Th|grep $mnt_net_mount_point
    if [ "$?" != "0" ];then
        echo "mount to $mnt_net_mount_point..........fail" >>/opt/mount_auto_boot/mount_auto_boot.log
        sleep 1
        ping -s 1 -c 1 $IP1 #去PING第1个IP
        if [ "$?" == "0" ]
        then
            echo "ping $IP1 Success" >>/opt/mount_auto_boot/mount_auto_boot.log
            echo `ifconfig|grep $intra_check_ip`
            ifconfig|grep $intra_check_ip
            if [ "$?" != "0" ];then
                    IPP=$inter_ip
                else
                    IPP=$intra_ip
            fi
            echo "当前检测访问点:"$IPP
            ping -s 1 -c 2 $IPP #去PING第2个IP
            if [ "$?" != "0" ];then
                echo "ping $IPP ERROR" >>/opt/mount_auto_boot/mount_auto_boot.log
            else
                echo "ping $IPP SUCCESS,mount to $mnt_net_mount_point.........." >>/opt/mount_auto_boot/mount_auto_boot.log
                echo "start monut $IPP"
                echo .
                echo "$IPP <<===???===>> $intra_ip"
                if [ "$IPP" == "$intra_ip" ];then
                    #内网环境下自动去挂载nfs共享目录,如不使用nfs,也可直接用webdav,2选1:
                    #nfs
                    #设置net_mount_point地址:
                    #net_mount_point="$IPP:$nfs_net_dir"
                    #sudo mount -t nfs $net_mount_point $mnt_net_mount_point
                    #webdav,5005为http 5006对应https端口
                    net_mount_point="http://$IPP:$web_dav_port"
                    sudo mount -t davfs $net_mount_point $mnt_net_mount_point
                else
                    #外网环境通过域名挂载,5005为http 5006对应https端口
                    net_mount_point="http://$IPP:$web_dav_port"
                    sudo mount -t davfs $net_mount_point $mnt_net_mount_point
                fi
                echo "checking........."
                sleep 3
                df -Th|grep $net_mount_point
                if [ "$?" != "0" ];then
                    echo "mount $net_mount_point..........fail" >>/opt/mount_auto_boot/mount_auto_boot.log
                    continue
                else
                    echo "mount_count:$mount_count"
                    echo "mount $net_mount_point..........done" >>/opt/mount_auto_boot/mount_auto_boot.log
                    df -Th|grep $net_mount_point >>/opt/mount_auto_boot/mount_auto_boot.log
                    echo "mount_count:$mount_count" >>/opt/mount_auto_boot/mount_auto_boot.log
                    break
                fi
            fi
        else
            echo "ping $IP1 ERROR"
            mount_count=$[$mount_count+1]
            sleep 5 #设置多长时间去PING一次
            continue
        fi
    else
        echo "mount_count:$mount_count"
        echo "mount $net_mount_point..........done" >>/opt/mount_auto_boot/mount_auto_boot.log
        df -Th|grep $net_mount_point >>/opt/mount_auto_boot/mount_auto_boot.log
        echo "mount_count:$mount_count" >>/opt/mount_auto_boot/mount_auto_boot.log
        break
    fi
done
exit 0

ctrl+s保存并退出

脚本结束

* Deepin V20 webdav自动启动:

方式1、通过autostart文件创建.desktop执行脚本:

sudo cd /home/admin/.config/autostart
sudo touch mount_auto_boot.desktop
sudo dedit mount_auto_boot.desktop
[Desktop Entry]
Type=Application
Exec="sudo /opt/mount_auto_boot/mount_auto_boot.sh"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_IN]=mount-auto
Name=mount-auto
Comment[en_IN]=mount-auto
Comment=mount-auto

方式2、通过定时任务实现开机60秒后尝试执行脚本挂载:

crontab -l
crontab -e

增加一行内容如下:

@reboot sleep 60 ; /opt/mount_auto_boot/mount_auto_boot.sh

方式3、脚本下一次优化实现自动注册自启,也期待网友提更多建议.

热心网友问题:

主要问题:

1.挂载成功后没多久,再访问目录就是

无法访问’/mnt/webdav’: 传输端点尚未连接、

  1. 访问失败后无法再次挂载

重复刷新以下内容:

次要问题:

  1. 当日挂载时使用autostart目录未能成功开机自启
  2. autostart中desktop文件,启动时似乎没有管理员权限,无法操作系统目录
  3. 关于autostart目录未能自启,我尝试了很多方法根据这篇文章:https://wiki.deepin.org/wiki/%E8%87%AA%E5%90%AF%E5%8A%A8%E7%A8%8B%E5%BA%8F

但不知是由于什么原因都未能成功,最后是使用注册服务才成功自启动

问题回复:

  1. 传输端点尚未连接:尝试强制卸载并删除挂载点.
sudo mount -l  /mnt/webdav
sudo rm -rf **/mnt/webdav
  1. 访问失败循环问题实则是脚本逻辑问题,重新覆盖一下脚本即可.

次要问题:

  1. 当日挂载时使用autostart目录未能成功开机自启

新脚本采用cron重启后60秒自动启动脚本,不采用autostart,因为开机启动存在网络问题,后期可以在脚本再增加网络连接判断.

  1. autostart中desktop文件,启动时似乎没有管理员权限,无法操作系统目录

可以用+sudo 成功启动,但是后面我修改了,没有再用autostart,你可以继续用.使用sudo

新方法脚本如上

免责声明:务必仔细阅读

  • 本站为个人博客,博客所转载的一切破解、path、补丁、注册机和注册信息及软件等资源文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。

  • 本站为非盈利性站点,打赏作为用户喜欢本站捐赠打赏功能,本站不贩卖软件等资源,所有内容不作为商业行为。

  • 本博客的文章中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断.

  • 本博客的任何内容,未经许可禁止任何公众号、自媒体进行任何形式的转载、发布。

  • 博客对任何脚本资源教程问题概不负责,包括但不限于由任何脚本资源教程错误导致的任何损失或损害.

  • 间接使用相关资源或者参照文章的任何用户,包括但不限于建立VPS或在某些行为违反国家/地区法律或相关法规的情况下进行传播, 博客对于由此引起的任何隐私泄漏或其他后果概不负责.

  • 请勿将博客的任何内容用于商业或非法目的,否则后果自负.

  • 如果任何单位或个人认为该博客的任何内容可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明至admin@proyy.com.我们将在收到认证文件后删除相关内容.

  • 任何以任何方式查看此博客的任何内容的人或直接或间接使用该博客的任何内容的使用者都应仔细阅读此声明。博客保留随时更改或补充此免责声明的权利。一旦使用并复制了博客的任何内容,则视为您已接受此免责声明.

您必须在下载后的24小时内从计算机或手机中完全删除以上内容.

您使用或者复制了本博客的任何内容,则视为已接受此声明,请仔细阅读


更多福利请关注一一网络微信公众号或者小程序

一一网络微信公众号
打个小广告,宝塔服务器面板,我用的也是,很方便,重点是免费的也能用,没钱太难了,穷鬼一个,一键全能部署及管理,送你3188元礼包,点我领取https://www.bt.cn/?invite_code=MV9kY3ZwbXo=


一一网络 » 新Deepin V20 自动挂载webdav脚本webdav与nfs内外网自动切换

发表评论

发表评论

一一网络-提供最优质的文章集合

立即查看 了解详情