PHP和Shell实现检查SAMBA与NFS Server是否存在


Posted in PHP onJanuary 07, 2015

通常会通过 /etc/fstab 来处理挂载的设置,然后再使用 mount -a 来重新确认挂载,最好在排程的程序用到挂载目录时也执行一次 mount -a,挂载目录在断线后是不会自动回复的,mount -a 的 Timeout 其实还蛮久的,尤其是 Server 不存在的时候,所以最好还是用对应的 client 先确认 server 是否存在。

而检查 NFS 的 client 可以用 showmount 来处理,在 Ubuntu 上的安装方式如下:

sudo aptitude install nfs-common

而 SAMBA 的 client 则是用 smbclient,在 Ubuntu 上的安装方式如下:
sudo aptitude install smbclient

检查 NFS Server 是否存在的流程
以 Shell 的方式检查
# 先以 client 确认 server 是否存在    

/sbin/showmount 192.168.0.6 >/dev/null 2>&1    

if [ "j$?" != "j0" ]; then      

   echo "NFS Server is not exist"    

   exit 1    

fi    

    

# 重新确认挂载     

mount -a >/dev/null 2>&1    

if [ "j$?" != "j0" ]; then    

   echo "NFS Server mount failed"    

   exit 1;    

fi   

以 PHP 的方式检查
/*先以 client 确认 server 是否存在*/     

$state = shell_exec('/sbin/showmount 192.168.0.6 >/dev/null 2>&1; echo $?');    

if(trim($state)!='0'){    

   echo "NFS Server is not exist";    

   exit;    

}    

    

/*重新确认挂载*/     

if(shell_exec('mount -a 2>&1')){    

   echo "NFS Server mount failed"    

   exit;    

}   

检查 SAMBA Server 是否存在的流程

以 Shell 的方式检查

# 先以 client 确认 server 是否存在    

smbclient -NL //192.168.0.6 >/dev/null 2>&1    

if [ "j$?" != "j0" ]; then      

   echo "SAMBA Server is not exist"    

   exit 1    

fi    

    

# 重新确认挂载     

mount -a >/dev/null 2>&1    

if [ "j$?" != "j0" ]; then    

   echo "SAMBA Server mount failed"    

   exit 1;    

fi   

以 PHP 的方式检查
/*先以 client 确认 server 是否存在*/     

$state = shell_exec('smbclient -NL //192.168.0.6 >/dev/null 2>&1; echo $?');    

if(trim($state)!='0'){    

   echo "SAMBA Server is not exist";    

   exit;    

}    

    

/*重新确认挂载*/     

if(shell_exec('mount -a 2>&1')){    

   echo "SAMBA Server mount failed"    

   exit;    

}  
PHP 相关文章推荐
ThinkPHP CURD方法之order方法详解
Jun 18 PHP
destoon复制新模块的方法
Jun 21 PHP
ThinkPHP关于session的操作方法汇总
Jul 18 PHP
THINKPHP支持YAML配置文件的设置方法
Mar 17 PHP
PHP中is_dir()函数使用指南
May 08 PHP
php随机获取金山词霸每日一句的方法
Jul 09 PHP
为你总结一些php系统类函数
Oct 21 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
Dec 21 PHP
简单的php+mysql聊天室实现方法(附源码)
Jan 05 PHP
PHP获取用户访问IP地址的5种方法
May 16 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 PHP
PHP实现的简易版图片相似度比较
Jan 07 #PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 #PHP
php中$_POST与php://input的区别实例分析
Jan 07 #PHP
php静态文件返回304技巧分享
Jan 06 #PHP
php判断当前用户已在别处登录的方法
Jan 06 #PHP
php实现utf-8转unicode函数分享
Jan 06 #PHP
windows中为php安装mongodb与memcache
Jan 06 #PHP
You might like
PHP 中执行排序与 MySQL 中排序
2009/04/21 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
PHP chop()函数讲解
2019/02/11 PHP
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
python3.3实现乘法表示例
2014/02/07 Python
python计算书页码的统计数字问题实例
2014/09/26 Python
Python实现基于HTTP文件传输实例
2014/11/08 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
联想德国官网:Lenovo Germany
2018/07/04 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
体育纪念品、亲笔签名的体育收藏品:Steiner Sports
2020/07/31 全球购物
师范大学应届生求职信
2013/11/21 职场文书
质量负责人岗位职责
2015/02/15 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
诗词赏析-(浣溪沙)
2019/08/13 职场文书
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android
python百行代码实现汉服圈图片爬取
2021/11/23 Python
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android
Android实现图片九宫格
2022/06/28 Java/Android