Grails groovy脚本与控制台插件环境的类似Cron的应用程序?

Grails groovy脚本与控制台插件环境的类似Cron的应用程序?,grails,groovy,cron,groovy-console,Grails,Groovy,Cron,Groovy Console,我们有一个应用程序,我们希望在其上运行脚本,就像在控制台窗口中一样,可以访问应用程序库和上下文,但我们需要像cron作业一样定期运行它 虽然永久性的解决方案显然是一项石英工作,但在修补应用程序之前,我们需要这样做 有什么东西可以提供给我们与控制台插件相同的环境,但可以通过命令行或不使用UI来运行 您可以像web界面一样运行控制台脚本,但只需使用如下curl: curl -F 'code= class A { def name } def foo = new A(name: "bar") p

我们有一个应用程序,我们希望在其上运行脚本,就像在控制台窗口中一样,可以访问应用程序库和上下文,但我们需要像cron作业一样定期运行它

虽然永久性的解决方案显然是一项石英工作,但在修补应用程序之前,我们需要这样做


有什么东西可以提供给我们与控制台插件相同的环境,但可以通过命令行或不使用UI来运行

您可以像web界面一样运行控制台脚本,但只需使用如下curl:

curl -F 'code=
class A {
  def name
}

def foo = new A(name: "bar")
println foo.name
' localhost:8080/console/execute

您将得到控制台将在下面打印的响应。

关于上面@mwaisgold的解决方案,我做了一些快速补充,对您有所帮助。我在脚本中添加了更多的内容来处理身份验证,加上curl的-F标志导致GroovyShell的evaluate方法出现了一个不明确的方法重载错误,因此我改为使用-d来解决这个问题:

#/bin/bash

curl -i -H "Content-type: application/x-www-form-urlencoded" -c cookies.txt -X POST localhost:8080/myapp/j_spring_security_check -d "j_username=admin&j_password=admin"

curl -i -b cookies.txt -d 'code=
int iterations = 0

while (iterations < 10) {
    log.error "********** Console Cron Test ${iterations++} ***********"        
}
log.error "********** Console Cron Test Complete ***********"

' localhost:8080/myapp/console/execute
#/bin/bash
curl-i-H“内容类型:application/x-www-form-urlencoded”-c cookies.txt-x POST localhost:8080/myapp/j_spring\u security\u check-d“j_username=admin&j_password=admin”
curl-i-b cookies.txt-d'代码=
int迭代次数=0
而(迭代次数<10次){
log.error“*******控制台Cron Test${iterations++}**********”
}
log.error“*********控制台Cron测试完成***********”
'本地主机:8080/myapp/console/execute

您可以从命令行运行完全相同的脚本,并通过类路径传递必要的lib。这还不够吗?你指的是什么库和上下文?我实际上指的是在应用程序运行时访问它的上下文和库。控制台插件允许这样做,就好像您在应用程序运行时在应用程序内部编写脚本一样。我能够通过将我的脚本放入控制台插件窗口的循环中(一旦脚本被执行,即使页面超时,它也会继续在后台运行)来解决这个问题(某种程度上)。这太棒了,这正是我想要的。