虚拟机连接外部的脚本使用
#!/bin/bash
echo '123' | sudo -S mount -t cifs -o nobrl,username=yk,password=123,gid=1000,uid=1000 //192.168.100.17/samba-yk /home/zt/Project
exit
这段Bash脚本的目的是在Linux环境下,通过管道(pipe)传递密码的方式,使用sudo命令以超级用户权限挂载一个CIFS(Common Internet File System)共享文件夹。下面是这段脚本的逐行解释以及需要注意的一些点:
#!/bin/bash:这是一个shebang行,指定了这个脚本应该使用/bin/bash解释器来执行。
echo ‘123’ | sudo -S mount -t cifs -o nobrl,username=yangkun,password=123,gid=1000,uid=1000 //192.168.100.17/samba-yangkun /home/zc/Project:
echo ‘123’:这个命令输出字符串123,这里123是sudo命令的密码。
|:管道符号,用于将前一个命令的输出作为后一个命令的输入。
sudo -S:sudo命令的-S选项允许从标准输入(stdin)读取密码,而不是从终端提示输入。
mount -t cifs:这个命令用于挂载CIFS共享。-t cifs指定文件系统类型为CIFS。
-o nobrl,username=yangkun,password=123,gid=1000,uid=1000:这是mount命令的选项部分,其中:
nobrl:禁用字节范围锁定(Byte Range Locking)。
username=yangkun:指定连接CIFS共享时使用的用户名。
password=123:指定连接CIFS共享时使用的密码。注意,在脚本中明文存储密码是不安全的做法。
gid=1000:设置挂载点文件的组ID。
uid=1000:设置挂载点文件的用户ID。
//192.168.100.17/samba-yangkun:这是CIFS共享的网络路径。
/home/zc/Project:这是本地挂载点,即CIFS共享内容将出现在这个目录下。
exit:这个命令使脚本执行完毕后退出。
注意事项:
在脚本中明文存储密码(如本例中的password=123)是非常不安全的。建议使用更安全的方法来处理密码,比如使用.netrc文件或通过环境变量等方式(但同样需要注意安全性)。
确保运行脚本的用户有权访问/home/zc/Project目录,并且该目录存在。
如果挂载的CIFS共享需要更高的安全性,可以考虑使用SMB 3.x协议,它提供了加密传输的选项。
脚本执行可能需要当前用户具有sudo权限,并且/etc/sudoers文件中可能需要配置NOPASSWD选项来允许无密码使用sudo执行特定命令(但这同样会带来安全风险)。