使用 "ldapscripts" 包的 Bash 脚本在 cron 中不起作用



Prerequisite: ldapscripts package, Version: 2.0.1-1

uname output: Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2+deb7u2 x86_64 GNU/Linux

注释:此问题使用ldapid,它是ldapscripts包的众多脚本部分之一。这个行为可以用这个包中的任何脚本复制。

考虑以下两行bash脚本:

#!/bin/bash
ldapid

从shell运行时,此操作效果良好。一旦它成为cron作业,就会抛出错误消息Could not guess user

我之前也遇到过类似的问题,请考虑以下bash脚本:

#!/bin/bash    
ldapid    
while read line    
do
  ldapid
done <"Some file"

第一个ldapid始终有效,但第二个ldapid抛出了相同的错误Could not guess user

这最终被证明是一个文件描述符问题,并通过使用以下片段解决:

while read line <&3
do
  ldapid
done 3< "Some file"

对于cron,由于缺乏更好的理解,我不知道如何做类似的事情,任何帮助都将不胜感激。非常感谢。

------------编辑更多详细信息,请参阅PiratTian的回复------------------

很抱歉,如果我早点说的话,我只想保持简单,这样就可以很容易地复制。表单

#!/bin/bash
/usr/sbin/ldap<script> $user 

是我在相当长的剧本中所写的。确切的命令,就在我的脚本的开头,在这里,整件事都失败了,并出现错误cannot guess user,是description=$(ldapfinger "$user" |grep description |cut -d: -f2),其中$user在前一行定义。将$user替换为harcoded username也没有帮助。

似乎任何作为参数传递的隐式或显式输入,在作为cron作业运行时都会被忽略,并返回错误Cannot guess user。另一方面,当我手动运行相同的脚本时,一切都会按预期进行。(注意,这是在ldapscripts更新之前的一个工作脚本)。

冒着听起来很愚蠢的风险,我还尝试在脚本中使用bash -c运行命令,并在crontab中使用* * * * * root /path/to/script.sh<&0,得到相同的结果,即Cannot guess user

我在Debian Wheezy(Linux earth 3.2.0-4-686-pae#1 SMP Debian 3.2.46-1 i686 GNU/Linux)下遇到了类似的问题

为了使ldapscripts工作,我对"/usr/share/ldapscripts/runtime"的内容进行了一些更改。代替行:

   USER=$(logname 2>/dev/null)

我刚用过

   USER=$(whoami 2>/dev/null)

因为我发现它主要用于日志记录(但我对检查不是很严格)。

这个作业只比上一篇文章中显示的片段高出一行。上述帖子的解决方案不起作用,因为该脚本中忽略了环境变量。

关于ldapaddgroup之类的脚本,该包还有一个问题是由于无法执行操作而导致的。事实上,我的问题是ldapscripts包默认使用libnss-ldap和libpam-ldap的设置(在我的情况下不是这样,因为我安装了libnss-ldap*d*和libpam-krb5)。因此,我对/etc/ldapscripts/ldapscripts.conf进行了手动配置,我尝试过的所有脚本都可以使用

希望得到帮助。

脚本是否依赖于shell通常提供的${USER}变量?

正在检查您找到的/usr/sbin/ldapid:

 # Current user
  [ -z "$USER" ] && end_die 'Could not guess current user (no $USER variable set)'
  _USER="$USER"
else
  _USER="$2"

试试类似的东西:* * * * * USER=myuser ldapid

或者由于您是从脚本运行的:

#!/bin/bash
USER=$(/usr/bin/whoami)
/usr/sbin/ldapid

或者下面(看起来ldapid接受user作为第一个参数

#!/bin/bash
/usr/sbin/ldapid username

相关内容

  • 没有找到相关文章

最新更新