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中的实现trim函数代码
Mar 19 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
Jun 17 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
PHP与MYSQL中UTF8编码的中文排序实例
Oct 21 PHP
迁移PHP版本到PHP7
Feb 06 PHP
PHP中的一些常用函数收集
May 26 PHP
分享PHP函数实现数字与文字分页代码
Jul 28 PHP
PHP入门教程之表单与验证实例详解
Sep 11 PHP
对PHP依赖注入的理解实例分析
Oct 09 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
详细解读php的命名空间(一)
Feb 21 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 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
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
JavaScript 事件对象的实现
2009/07/13 Javascript
学习ExtJS accordion布局
2009/10/08 Javascript
javascript void(0)的妙用
2009/10/21 Javascript
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
javaScript如何跳出多重循环break、continue
2016/09/01 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
python中lambda与def用法对比实例分析
2015/04/30 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
python实现K最近邻算法
2018/01/29 Python
python使用tensorflow深度学习识别验证码
2018/04/03 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
python绘制封闭多边形教程
2020/02/18 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
python opencv实现图像配准与比较
2021/02/09 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
上级检查欢迎词
2014/01/18 职场文书
超市重阳节活动方案
2014/02/10 职场文书
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
初二物理教学反思
2016/02/19 职场文书