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 相关文章推荐
图书管理程序(三)
Oct 09 PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
php禁止浏览器使用缓存页面的方法
Nov 07 PHP
THINKPHP内容分页代码分享
Jan 14 PHP
PHP输出两个数字中间有多少个回文数的方法
Mar 23 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
Linux操作系统安装LAMP环境
Jun 26 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
Jul 07 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
Nov 04 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 PHP
PHP实现的大文件切割与合并功能示例
Apr 10 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
for循环连续求和、九九乘法表代码
2012/02/20 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
javascript 面向对象编程基础:封装
2009/08/21 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
2014/09/15 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
javascript变量提升和闭包理解
2018/03/12 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
Python实现把数字转换成中文
2015/06/29 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
python主线程捕获子线程的方法
2018/06/17 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
python 多线程串行和并行的实例
2019/02/22 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
Django choices下拉列表绑定实例
2020/03/13 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
儿科主治医生个人求职信
2013/09/23 职场文书
论文诚信承诺书
2014/05/23 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS