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 相关文章推荐
php笔记之:AOP的应用
Apr 24 PHP
解析yii数据库的增删查改
Jun 20 PHP
PHP编译安装中遇到的两个错误和解决方法
Aug 20 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
详谈php ip2long 出现负数的原因及解决方法
Apr 05 PHP
php cli模式下获取参数的方法
May 05 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
Yii框架分页技术实例分析
Aug 30 PHP
php文件包含的几种方式总结
Sep 19 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计算十二星座的函数代码
2012/08/21 PHP
php 魔术方法详解
2014/11/11 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
List Installed Hot Fixes
2007/06/12 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
Easyui和zTree两种方式分别实现树形下拉框
2017/08/04 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
js的对象与函数详解
2019/01/21 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
使用python实现BLAST
2018/02/12 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
六十岁生日答谢词
2014/01/10 职场文书
端午节活动策划方案
2014/03/09 职场文书
大二学年个人总结
2015/03/03 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技