【问题标题】:Can't get BASH script to fill in password无法获取 BASH 脚本来填写密码
【发布时间】:2014-03-09 03:07:56
【问题描述】:

我有一个通过 Hyper-V 设置的 Ubuntu 12.04 服务器 VM,它被设置为媒体服务器。我的 Server 2012 操作系统上有一个共享驱动器,我想在 Ubuntu 启动时挂载它。

现在,我可以通过输入 sudo smbmount //host_ip/media ~/media 来安装它

输入后,系统会提示我输入共享密码,输入密码后会正确安装驱动器。

我已经编写了一个脚本,但在提示时无法让它写入密码。

  • 有没有办法可以编写一个简单的 BASH 脚本并让它在启动时以 root 权限运行?
  • 如何让脚本填写密码?

【问题讨论】:

  • 你能告诉我们你的脚本(显然隐藏你的密码/细节)吗?这样,我们可以为您添加建议:)

标签: linux bash ubuntu samba


【解决方案1】:

通常在filesystems table file (/etc/fstab) 中设置永久挂载。操作系统启动时,会创建/etc/fstab 中指定的所有挂载。这是来自 Ubuntu 在how to permanently mount Windows shares 上的一些信息。

【讨论】:

    【解决方案2】:

    如果你安装了expect,这很容易。

    这是一个使用expect 的示例。来源-GeekStuff

    #!/usr/bin/expect
    
    set timeout 20
    set ip [lindex $argv 0]
    set user [lindex $argv 1]
    set password [lindex $argv 2]
    
    spawn ssh "$user\@$ip"
    
    expect "Password:"
    
    send "$password\r";
    
    interact
    

    执行上面的expect程序如下所示。

    guest@host1 $ ./ssh.exp 192.168.1.2 root password
    spawn ssh root@192.168.1.2
    Password:
    Last login: Sat Oct  9 04:11:35 2010 from host1.geetkstuff.com
    root@host2 #
    

    【讨论】:

    • 正如我所提到的......这是一个非常简单的脚本......但我到目前为止是:#!/bin/bash echo "*** Mounting Share ***" echo " " sudo smbmount //192.168.1.176/media ~/media echo"" expect "Password:" send "mysecretpassword" echo ""
    【解决方案3】:

    正如 Daniel 指出的那样,在启动时挂载 Samba 共享的一个好方法是将共享名称放在 /etc/fstab 文件中。

    在启动时安装它的“单线”是:

    //主机名/share /mnt/samba smbfs username=user,password=password 0 0

    最后两个参数应该为零。它们仅用于本地文件系统,并且与 dump 命令的使用和 fsck 的执行顺序有关。

    【讨论】:

      猜你喜欢
      • 2014-07-09
      • 2013-06-10
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      相关资源
      最近更新 更多