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 相关文章推荐
IIS+PHP+MySQL+Zend配置 (视频教程)
Dec 13 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
codeigniter框架批量插入数据
Jan 09 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 PHP
php使用cookie实现记住登录状态
Apr 27 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
PHP Filter过滤器全面解析
Aug 09 PHP
php发送http请求的常用方法分析
Nov 08 PHP
Yii框架批量插入数据扩展类的简单实现方法
May 23 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
Jun 09 PHP
PHP数据库操作四:mongodb用法分析
Aug 16 PHP
PHP自动识别当前使用移动终端
May 21 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边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
微信支付开发告警通知实例
2016/07/12 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
jquery+php实现滚动的数字特效
2015/11/29 Javascript
js严格模式总结(分享)
2016/08/22 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
wxPython窗口的继承机制实例分析
2014/09/28 Python
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
对Python 语音识别框架详解
2018/12/24 Python
Python Print实现在输出中插入变量的例子
2019/12/25 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
python小白学习包管理器pip安装
2020/06/09 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
年终考核实施方案
2014/05/26 职场文书
土地租赁意向书
2014/07/30 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python