【问题标题】:How to know if file exsits ina Samba share如何知道文件是否存在于 Samba 共享中
【发布时间】:2022-01-15 09:31:39
【问题描述】:

我写了一个如下的 shellscript,来检查 samba 共享中的文件:

 date_gen=$(date --date="3 days ago" +"%-Y%m%d")
 fileName=${date_gen}"_Combined Reg Report.xlsx"
 if [ ! -f smb://nfs/carboard/"${fileName}" -U  ]
 then
    echo "File does not exist in Bash"
else
  echo ${fileName}
fi
exit 1

有人可以帮我解决这个问题吗,我总是收到“文件在 Bash 中不存在”。文件夹中有文件。

谢谢, 艺术

【问题讨论】:

  • 系统上是否挂载了共享?否则无法通过 shell 直接访问它,需要外部工具
  • 好吧,我可以使用命令 smget 并将文件从共享文件夹复制到 unix 服务器。所以我认为共享已安装。这有帮助吗?
  • 如果您使用的是smbget,则表示该共享未挂载。

标签: bash shell unix samba


【解决方案1】:

您应该检查它是否已安装,然后检查文件

if mount | grep -q /nfs/cardboard
then
    if [[ ! -f /nfs/cardboard/"${fileName}" ]]
    then
        ...
    fi
else
    echo "not mounted"
fi

【讨论】:

    【解决方案2】:

    smbclient检查文件是否存在:

    filename="$(date --date='3 days ago' '+%Y%m%d')_Combined Reg Report.xlsx"
    
    if smbclient -A smbauth.conf '//nfs/carboard' -c "ls \"$filename\"" > /dev/null 2>&1
    then
        echo the file exists
    else
        echo the file is not there
    fi
    

    其中smbauth.conf 是一个以下列格式存储您的凭据的文件:

    username=myuser
    password=mypassword
    domain=MYDOMAIN
    

    我不知道转义究竟如何与 smbclient 一起工作(似乎像 " 这样的某些字符是无法转义的),但在你的情况下,双引号就足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      相关资源
      最近更新 更多