欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

jamf 上面的策略会 运行脚本,,,, 在脚本里面判断 这个策略是不是 从 self service 上 点击运行的 monica chatgpt 有大用 有大大用 有大大大用

我自己亲自做的,,,,我的思路是下面的第三种方法 使用 printenv 命令  打印现环境变量

#!/bin/bash
#
##  通过 printenv 可以看出 使用 self service 不使用 self service 后变量的区别
env_vars=$(printenv)
# 使用 osascript 显示对话框
/usr/bin/osascript -e "display dialog \"$env_vars\""
if [ -n "$USER"  ] &&  [ "$USER" != "root" ];then
# 当从  self service  点击后 , $USER 就是 当前用户,,即  不为空 且 不是 root
 (/usr/bin/osascript -e "display dialog \"$USER 脚本是从self service 启动的5 \" buttons {\"OK\"}   default button \"OK\" "   )
else
 (/usr/bin/osascript -e "display dialog \"$USER 脚本是从其他方式启动启动的5 \" buttons {\"OK\"}   default button \"OK\" "   )
fi



jamf 上面的策略会 运行脚本,,,,  在脚本里面判断 这个策略是不是 从 self service 上 点击运行的 

在 Jamf 中,如果你想判断脚本是否是通过 Self Service 点击运行的,可以使用以下方法:

方法

  1. 检查脚本参数: 在脚本中,可以检查传递给脚本的参数。Jamf 在从 Self Service 运行策略时,通常会传递特定的参数。

  2. 使用环境变量: 你可以检查某些环境变量,以确定脚本的运行上下文。

示例脚本

以下是一个简单的示例脚本,展示如何检查脚本是否从 Self Service 运行:

bash        
复制        
#!/bin/bash # 检查是否有特定的环境变量或参数 if [[ "$4" == "self_service" ]]; then    echo "脚本是通过 Self Service 运行的"    # 在这里添加你的逻辑 else    echo "脚本不是通过 Self Service 运行的"    # 其他逻辑 fi

说明

  • 在这个示例中,$4 是传递给脚本的第四个参数,通常可以用来判断是否是从 Self Service 运行。你可以根据具体情况调整参数的索引。

  • 你可以在 Jamf Pro 的策略中配置脚本参数,确保在从 Self Service 运行时传递正确的值。

总结

通过检查脚本的参数或环境变量,你可以轻松判断脚本是通过 Self Service 运行的。这种方法可以帮助你在不同的上下文中执行不同的逻辑。



但是 我点击 self service 时,,里面的 $4 的值一直为空

如果在 Jamf 的脚本中 $4 的值为空,可能是因为通过 Self Service 运行时没有传递预期的参数。以下是一些可以尝试的方法来判断脚本是否是从 Self Service 运行的:

方法一:使用 jamf 命令

可以通过调用 jamf 命令来检查当前的运行上下文。以下是一个示例:

bash
复制
#!/bin/bash # 检查是否从 Self Service 运行 if [ "$(jamf checkJSSConnection)" ]; then    echo "脚本是通过 Self Service 运行的"    # 在这里添加你的逻辑 else    echo "脚本不是通过 Self Service 运行的"    # 其他逻辑 fi

方法二:检查日志文件

Self Service 运行的脚本通常会在系统日志中记录相关信息。你可以检查日志文件,判断脚本的执行来源:

bash
复制
#!/bin/bash # 检查系统日志 if grep -q "Self Service" /var/log/system.log; then    echo "脚本是通过 Self Service 运行的"    # 在这里添加你的逻辑 else    echo "脚本不是通过 Self Service 运行的"    # 其他逻辑 fi

方法三:使用环境变量

有些情况下,可以通过环境变量来判断脚本的执行环境。你可以打印所有环境变量,看看是否有可以用来判断的变量:

bash
复制
#!/bin/bash # 打印所有环境变量 printenv

总结

由于 $4 为空,建议使用 jamf 命令或检查系统日志来判断脚本是否是通过 Self Service 运行的。这些方法可以帮助你更可靠地获取运行上下文。


把 printenv 赋给一个变量,,然后 通过  osascript  display dialog 输出

printenv 的输出赋给一个变量,并通过 osascript 使用 display dialog 输出,可以使用以下的 Bash 脚本示例:

bash
复制
# 将 printenv 的输出赋给变量 env_vars=$(printenv) # 使用 osascript 显示对话框 osascript -e "display dialog \"$env_vars\""

说明:

  1. printenv:此命令用于显示当前环境变量。

  2. env_vars=$(printenv):将 printenv 的输出保存到 env_vars 变量中。

  3. osascript -e "display dialog \"$env_vars\"":使用 AppleScript 的 display dialog 命令显示变量内容。

确保在 macOS 的终端中运行此脚本。






普通分类: