Plesk 中的某些操作,例如:

  • 创建客户帐户
  • 移除 IP 地址
  • 更新域名的主机设置及其它

被Plesk称为 事件 。对于每个事件,都可以创建一个或多个事件处理程序在事件发生时执行预设的命令。

事件处理程序对事件每次发生时要执行某项操作或某组操作时很有帮助。例如,您可以创建一个事件处理程序可在每次创建订阅时触发,并将其配置可自动创建邮箱、向外部服务发送请求,等等。

添加事件处理程序

  1. 进入 工具与设置 > 事件管理器

  2. 点击  添加事件处理程序

  3. 从 “事件” 列表中选择将要触发处理程序的事件。

  4. 在 “优先级” 下,设置处理程序执行优先级,要么从列表中选择要么在字段中自行键入数字。如果一个事件分配了多个处理程序设置优先级就会变得很重要。这样,就会根据优先级降序触发处理程序(事件会首先触发最高优先级的处理程序,然后触发第二优先级的处理程序,以此类推)。

  5. 从”用户” 列表选择将要代表其执行处理程序的系统用户。

    注解: 服务器管理员可以创建代表 root 用户在服务器上运行的事件处理程序。如果您要限制使用 root 帐户,请创建一个名为  root.event_handler.lock  的空文件(在 /usr/local/psa/var/ 中创建)。

  6. 不管何时在 “命令” 字段中触发事件处理程序都需要将路径键入 shell 脚本或含有要执行的命令的 .bat 文件(例如, /usr/local/psa/bin/script.shC:\Windows\Temp\script.bat )中。

    注解: 确保给您的脚本执行权限。您可以运行以下命令来实现: chmod 755 <script.sh>

  7. 点击  确定

传递事件参数

不管何时触发一个事件处理程序,都会传递与该事件相关的某个数据(”事件参数”) ,具体传递什么数据由相应的事件处理程序决定。例如,”已创建域名” 事件处理程序会传递以下参数:

  • 新创建域名的名称。
  • 新创建域名的GUID。
  • 拥有新创建域名的客户帐户的GUID。

每个参数都以可在 shell 脚本或 .bat 文件中使用的环境变量的形式进行传递,如下:

Plesk for Linux

在您的 shell 脚本中使用占位符 ${ENVIRONMENT_VARIABLE_NAME} (例如 “${NEW_DOMAIN_NAME}”)。触发事件处理程序时,占位符将被事件相应的值替代。

Plesk for Windows

在 bat 文件中使用占位符 %N (例如,”%1”),在事件处理程序设置中于命令末尾处的相应位置附加所需环境变量的名称。在下面的示例中

image-78436.png

占位符 “%1” 将被 “NEW_DOMAIN_NAME” 环境变量的值替换,而 “%2” 将被 “NEW_DOMAIN_GUID” 的值替换。如果您在 .bat 文件中使用 “%3”,将不会被替代,因为在命令后只指定了两个环境变量名称。

您可以在 此处 看到事件参数的完整列表和每个事件处理程序相关联的环境变量名称。

下面有‘已创建客户帐户’ 事件的两个脚本示例作为参考:

  • (Plesk for Linux) test-handler.sh

    #!/bin/bash
    echo "--------------" >> /tmp/event_handler.log
    /bin/date >> /tmp/event_handler.log # information on the event date and time
    /usr/bin/id >> /tmp/event_handler.log # information on the user, on behalf of which the script was executed (to ensure control)
    echo "customer created" >> /tmp/event_handler.log # information on the created customer account
    echo "name: ${NEW_CONTACT_NAME}" >> /tmp/event_handler.log # customer's name
    echo "login: ${NEW_LOGIN_NAME}" >> /tmp/event_handler.log # customer's username in Plesk
    echo "--------------" >> /tmp/event_handler.log
    
  • (Plesk for Windows) test-handler.bat

    echo "--------------" >> c:\windows\temp\event_handler.log
    rem information on the event date and time
    date /T   >> c:\windows\temp\event_handler.log
    rem information on the created customer account
    echo "customer created" >> c:\windows\temp\event_handler.log
    rem customer's name
    echo "name: %1"       >> c:\windows\temp\event_handler.log
    rem customer's username in Plesk
    echo "login: %2"      >> c:\windows\temp\event_handler.log
    echo "--------------" >> c:\windows\temp\event_handler.log
    

如果您登录 Plesk 并使用姓名 “John Doe” 和登录名 “john_doe” 创建一个客户帐户,将会触发事件处理程序,会将以下记录添加到  event_handler.log 文件:

  • (Plesk for Linux)

    Fri Mar 16 15:57:25 NOVT 2007
    uid=0(root) gid=0(root) groups=0(root)
    customer created
    name: John Doe
    login: john_doe
    
  • (Plesk for Windows)

    Mon March 15 21:46:34 NOVT 2010
    customer created
    name: John Doe
    login: john_doe
    

编辑和移除事件处理程序

若要查看当前的活动事件处理程序列表,请进入 工具与设置 > 事件管理器 。您还可以在此处编辑并移除事件处理程序:

  • 若要编辑一个事件处理程序,请点击此名称,进行所需更改,然后点击 确定
  • 若要移除一个事件处理程序,请勾选相应的复选框并点击 移除