linux 全自动安装nfs服务共享及设置windows访问

首先在centos上设置配置文件

[data]
serverpath=/tmp/nfsshare
network=192.168.31.0/24
power=rw

设置共享路径,

运行访问的网络 可网段,可IP,中间用空格分开

设置权限 rw读写,ro只读

shell脚本

 yum -y install nfs*
(rpm -qa |grep  -E 'nfs|rpcbind')&&echo 安装或更新成功!||echo 安装或更新失败!
#读取配置文件
if [ ! -e ./nfsset.ini ];then
echo 配置文件丢失!
exit
fi

i=0
cat ./nfsset.ini|grep -E 'serverpath|network|power'|awk -F '=' '{print $2}' >/tmp/tmpset.ini
while read line
do
array[$i]=$line
let i++
done < /tmp/tmpset.ini #使用管道符 | 的方法相当于启动了一个独立的子进程,无法访问内部变量
echo "${array[0]}
${array[1]}
${array[2]}"
findstr=`echo ${array[0]}|awk 'BEGIN{FS="/"}''{print $2}'`
echo $findstr

if [[ -d ${array[0]} ]];then
echo nfs共享目录${array[0]}
else
mkdir ${array[0]}
fi
chmod -R 777 ${array[0]}
ls -ali ${array[0]}

if [[ -e /etc/exports ]];then
chmod -R 777 /etc/exports
echo 未修改前权限设置
sed -n "/.*${findstr}.*/p" /etc/exports
sed -i "/.*${findstr}.*/d" /etc/exports
echo "${array[0]}	${array[1]}(fsid=0,insecure,${array[2]},no_root_squash,no_all_squash,sync)" >> /etc/exports
else
echo "${array[0]}	${array[1]}(fsid=0,insecure,${array[2]},no_root_squash,no_all_squash,sync)" > /etc/exports
fi

echo 修改后权限设置
cat /etc/exports
systemctl restart nfs
systemctl restart rpcbind
systemctl enable nfs
systemctl enable rpcbind
systemctl list-units --type=service|grep  -i -E "nfs|rpcbind"|awk '{if($4=="running"&&$3=="active"){print $1",服务启动成功"}else{print $1",服务启动失败,请检查"}}'
showmount -e localhost&&echo nfs共享成功||echo nfs共享失败
exportfs -rv
#防火墙设置
firewall-cmd --permanent --zone=public --add-service=nfs
firewall-cmd --reload
systemctl stop firewalld.service
systemctl disable firewalld.service
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0
echo "enforce `getenforce`"

windows客户端访问配置文件

<?xml version="1.0" encoding="utf-8"?>
<set>
<server ip="192.168.31.218" path="/tmp/nfsshare"  >服务器IP与路径</server>
  <disk map="M:">映射盘符</disk>  
</set>

自动安装客户端和访问脚本如下

cls
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName Microsoft.VisualBasic

$Currentpath=Split-Path -parent $MyInvocation.MyCommand.Definition #获取脚本目录
[xml]$xml=Get-Content "$Currentpath\nfsforwin.xml"
if ($PSVersionTable["PSVersion"].Major -lt 3){
$nfs=Get-WindowsFeature -Name NFS-Client|?{$_.Installed -eq $true}
 if ($nfs -eq $null){
 Write-Host "正在安装nfs客户端,请稍后...." -ForegroundColor Green
 Install-WindowsFeature NFS-Client
 return
  }
}
else {
 if(!(Test-Path "$env:windir\System32\mount.exe")){Write-Host "请先从windows控制面板安装程序里手动安装NFS客户端" -ForegroundColor Red;return }     
}
umount -a -f
showmount -e $xml.set.server.ip
& cmd "/c mount $($xml.set.server.ip):$($xml.set.server.path) $($xml.set.disk.map)"
Set-ItemProperty -path HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default -Name AnonymousUid  -Value 0 -Force
Set-ItemProperty -path HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default -Name AnonymousGid  -Value 0 -Force

效果如下

linux下访问nfs,就更简单些 直接执行命令 

-------------------------------------------------------------------------------
[root@CentOS ~]# mount -t nfs -o rw,bg,retry=1  192.168.31.0/24:/media  /media
-------------------------------------------------------------------------------

卸载NFS文件系统
与卸载普通的本地文件系统一样,可以通过umount命令把它卸载,终止与NFS服务器的连接。但在卸载前,应该确保已经没有任何进程在使用该文件系统。用户可以通过fuser命令进行检查。
卸载NFS文件系统的命令格式如下所示:
[root@CentOS ~]# umount [远程文件系统或挂载点]

卸载上面例子挂载的NFS文件系统的方法:
[root@CentOS ~]# umount /media  或

[root@CentOS ~]# umount 192.168.31.0/24:/media

8、fuser命令简单用法
linux环境下,当使用umount命令卸载挂载点时,会遇到“device is busy”提示,这时fuser就能查出谁在使用这个资源;当然umount –lf  [挂载点] 也可以强制卸载

运行下面命令看一下哪个用户哪个进程占用着此目录,假设挂载的目录为/media
[root@CentOS ~]# fuser -mvu /media

运行下面命令杀掉占用此目录的进程
[root@CentOS ~]# fuser -mvk /media
或者fuser -mvki  /media(每杀掉一下进程会让你确认)

选项说明
-m name 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。
-u 在每个PID后面添加进程拥有者的用户名称
-v 详细模式
-k 杀掉访问文件的进程
-i 杀掉进程之前询问用户,如果没有-k这个选项会被忽略

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zyfsky666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值