Create a Post
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Ambassador
Ambassador

API: How to use args in run-script ?

Jump to solution

Hello CheckMates!

Could you provide me a hint on how to use args parameter in API (v1.1) call run-script to pass arguments to an OS command or script ? Using args with mgmt._cli, postman, SCconsole returns a failed task.

e. g. :

mgmt._cli -r true -f json run-script script-name "ping" script "ping" args " -c1 172.17.xxx.2" targets.1 "mgmt._server_itself"

returns:

"mgmt._server_itself - ping"  failed  (100%)
{
<omitted for brevity>
    "task-id" : "e1f9a669-2cf8-4248-bee7-437902810e9b",
    "task-name" : "mgmt._server_itself - ping",
    "status" : "failed",
<omitted>
      "statusCode" : "failed",
      "statusDescription" : "Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline],  [-p pattern] [-s packetsize] [-t ttl] [-I interface or address

as if arguments in args string value are not passed to bash. Various arguments and escape sequences tried, same result.

Passing all arguments in script value works:

mgmt._cli -r true -f json run-script script-name "ping" script "ping -c1 172.17.xxx.2" targets.1 "mgmt._server_itself"

returns:

"mgmt._server_itself - ping"  succeeded  (100%)
{
<omitted>
    "task-id" : "0751191e-9fed-4bcf-851f-b97645dcea4c",
    "task-name" : "mgmt_server_itself - ping",
    "status" : "succeeded",
<omitted>
      "statusCode" : "succeeded",
      "statusDescription" : "PING 172.17.xxx.2 (172.17.xxx.2) 56(84) bytes of data. 64 bytes from 172.17.xx.2: icmp_seq=1 ttl=128 time=0.110 ms,  --- 172.17.xxx.2
 ping statistics ---, 1 packets transmitted,  1...",

Screened api.elg, cpm.elg, fwm.elg for clues - didn't understand how script string and args string are passed to bash.

Environment: R80.10, JHF T112 

Thank you for your time,

andreip

Tags (2)
1 Solution

Accepted Solutions
Highlighted
Employee
Employee

Hi 

please try to run this and update me if this works for you.

mgmt._cli -r true -f json run-script script-name "ping" script 'ping $1 $2' args " -c1 172.17.xxx.2" targets.1 "mgmt._server_itself"

View solution in original post

6 Replies
Highlighted
Employee+
Employee+

If I'm not mistaken there was an issue with args not being executed. 

Robert Decker‌ can you comment? I think this is API-101.

Highlighted
Employee++
Employee++

Right, this is a bug (not in API), and it will be fixed.

Workaround - instead of specifying the args parameter, use script body.

Highlighted
Employee
Employee

Hi 

can you provide me with the bug details.

Highlighted
Employee
Employee

Hi 

please try to run this and update me if this works for you.

mgmt._cli -r true -f json run-script script-name "ping" script 'ping $1 $2' args " -c1 172.17.xxx.2" targets.1 "mgmt._server_itself"

View solution in original post

Highlighted
Employee+
Employee+

Does anyone have an example of more than one target being used in a single command? Looking to see how you build that list of targets.

Thanks!

0 Kudos
Reply
Highlighted
Admin
Admin
A second target would be target.2 "gateway2"
A third target would be target.3 "gateway3"
Etc.