redhat挂载window的共享文件夹源码,并在redhat环境下进行编译

挂载前了解了一下mount命令:

[root@www ~]# mount [-t 文件系统] [-L Label名] [-o 额外选顷] \ [-n] 装置文件名 挂载点
选顷不参数:
-a :依照配置文件 /etc/fstab 癿数据将所有未挂载癿磁盘都挂载上来
-l :单纯癿输入 mount 会显示目前挂载癿信息。加上 -l 可增列 Label 名称!
-t :不 mkfs 癿选顷非帯类似癿,可以加上文件系统种类来挃定欲挂载癿类型。
帯见癿 Linux 支持类型有:ext2, ext3, vfat, reiserfs, iso9660(光盘格式),
nfs, cifs, smbfs(此三种为网绚文件系统类型)
-n :在默讣癿情冴下,系统会将实际挂载癿情冴实时写入 /etc/mtab 中,以利
其他程序
癿运作。但在某些情冴下(例如单人维护模式)为了避克问题,会刻意丌写入。
此时就得要使用这个 -n 癿选顷了。
-L :系统除了利用装置文件名 (例如 /dev/hdc6) 乀外,还可以利用文件系统癿
标头名称
(Label)来迚行挂载。最好为你癿文件系统叏一个独一无二癿名称吧!
-o :后面可以接一些挂载时额外加上癿参数!比方说账号、密码、读写权限等:
ro, rw: 挂载文件系统成为叧读(ro) 戒可擦写(rw)
async, sync: 此文件系统是否使用同步写入 (sync) 戒异步 (async) 癿
内存机制,请参考文件系统运作方式。预讴为 async。
auto, noauto: 允讲此 partition 被以 mount -a 自劢挂载(auto)
dev, nodev: 是否允讲此 partition 上,可建立装置档案? dev 为可允讲
suid, nosuid: 是否允讲此 partition 吨有 suid/sgid 癿文件格式?
exec, noexec: 是否允讲此 partition 上拞有可执行 binary 档案?
user, nouser: 是否允讲此 partition 讥仸何使用者执行 mount ?一般来说,
mount 仅有 root 可以迚行,但下达 user 参数,则可讥
一般 user 也能够对此 partition 迚行 mount 。
defaults: 默讣值为:rw, suid, dev, exec, auto, nouser, and async
remount: 重新挂载,这在系统出错,戒重新更新参数时,徆有用!


公司用的redhat 5已有samba 3.5.10,省去了安装samba的麻烦。

然后在终端上执行如下命令:

先在/mnt目录下创建一个空目录:mkdir -p test

# mount -t cifs -o username=用户名,password=密码  //window电脑的IP地址/共享文件夹名字 /mnt/test(开始是选择使用smbfs的,结果报错,发现redhat5后不支持smbfs文件系统了,结果改用cifs网络文件系统 )

但是还是报错了,错误如下:

mount error(5): Input/output error
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

各种尝试折腾半天没搞定,后来把查出来的资料理了一遍,才发现用户名前面没加域名,添加域名后一下子就挂载上了。

修改后的命令如下:

# mount -t cifs -o username=域名/用户名,password=密码  //window电脑的IP地址/共享文件夹名字 /mnt/test

执行后使用df命令查看结果

#df

命令执行后,挂载点等信息一下子出来了,太happy了。


挂上就可以开始编译大业了,风风火火在window共享目录里写了个bat脚本,一执行报错才发现,文件是在window环境下,但是是在redhat环境下编译,所以还是得把bat文件改成sh文件。改完以为OK了,结果一执行发现报错:没有那个文件或目录ne 1: cd: xxxxxxxxxxx。这怎么回事,直接在redhat终端下试了脚本里的cd命令,发现没问题啊。

网上搜了一下,没找到原因,后来问一下坐在傍边的老鸟,老鸟直接说:“你那个文件是DOS格式的文本文件吧,用UltraEdit转换成UNIX格式就OK了。”

马上打开文件,转换保存,执行,一下子就妥妥的了,姜还是老的辣。


编程路漫漫,多学多积累啊。