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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
URL Rewrite的设置方法
Jan 02 PHP
php下过滤HTML代码的函数
Dec 10 PHP
PHP类的使用 实例代码讲解
Dec 28 PHP
php创建session的方法实例详解
Jan 27 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
Jan 07 PHP
mac下多个php版本快速切换的方法
Oct 09 PHP
PHP使用pdo实现事务处理操作示例
Sep 05 PHP
thinkphp5框架API token身份验证功能示例
May 21 PHP
PHPstorm激活码2020年5月13日亲测有效
Sep 17 PHP
详解php中流行的rpc框架
May 29 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
我的论坛源代码(二)
2006/10/09 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
PHP网络操作函数汇总
2015/05/18 PHP
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
[03:48]大碗DOTA
2019/07/25 DOTA
python单线程实现多个定时器示例
2014/03/30 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
python操作文件的参数整理
2019/06/11 Python
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
会计专业毕业生求职信分享
2014/01/03 职场文书
校园环保标语
2014/06/13 职场文书
关键在于落实心得体会
2014/09/03 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis