Visit Our UNIX and Linux User Community

HELP - loop a curl command with different variables from input file

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting HELP - loop a curl command with different variables from input file
# 1  
Old 08-15-2017
RedHat HELP - loop a curl command with different variables from input file

Hi guys!

Kind of new to bash scripting and now I'm stuck.

I need to curl with these variables:
"{ \"nodename\": \"$1\", \"ipaddress\": \"$2\", \"poolname\": \"$3\", \"port\": \"$4\", \"loadbalancer\" : \"$5\" }"

and my input_file.txt contains
server001 serverpool1 80 loadbalancer01
server002 serverpool1 80 loadbalancer01
server003 serverpool1 80 loadbalancer01

Can't figure out how to "insert" the variables in the input_file.txt to the curl Smilie

Thanks in advance Smilie

Last edited by vbe; 08-15-2017 at 05:43 AM.. Reason: code tags...
# 2  
Old 08-15-2017
Welcome to the forum.

Please become accustomed to provide decent context info of your problem.
It is always helpful to support a request with system info like OS and shell, related environment (variables, options), preferred tools, adequate (representative) sample input and desired output data and the logics connecting the two, and, if existent, system (error) messages verbatim, to avoid ambiguities and keep people from guessing.

I'm pretty sure you won't "curl with these variables:", so please provide complete commands so people don't need to guess what you're doing or want to do. To read, expand, and use data from files, try
while read A B C D E; do echo "{ \"nodename\": \"$A\", \"ipaddress\": \"$B\", \"poolname\": \"$C\", \"port\": \"$D\", \"loadbalancer\" : \"$E\" }"; done < input_file.txt
{ "nodename": "server001", "ipaddress": "", "poolname": "serverpool1", "port": "80", "loadbalancer" : "loadbalancer01" }
{ "nodename": "server002", "ipaddress": "", "poolname": "serverpool1", "port": "80", "loadbalancer" : "loadbalancer01" }
{ "nodename": "server003", "ipaddress": "", "poolname": "serverpool1", "port": "80", "loadbalancer" : "loadbalancer01" }

This User Gave Thanks to RudiC For This Post:
# 3  
Old 08-15-2017
Hi @RudiC. Thank you for the reply and apologies for the lack of pertinent info.

You are absolutely correct that I won't "curlwith these variables" so let me try to rephrase.

Curl will be used for an API call to add multiple nodes to a load balancer pool (hence my cry for help on how to go about reading, expanding and using a source file) and the variables above are all needed.
Looks something like this -
curl -u 'usernamepassword' "Content-Type: application/json" POST https://api/add/ "{ \"nodename\": \"$A\", \"ipaddress\": \"$B\", \"poolname\": \"$C\", \"port\": \"$D\", \"loadbalancer\" : \"$E\" }"

I will be running a bash script to loop the API call from a RHEL 6.5 bastion host.

Thank you again and I'll try what you suggested Smilie

Last edited by Scrutinizer; 08-15-2017 at 10:47 AM.. Reason: code tags
# 4  
Old 08-19-2017
OK so the read and expand from file is now good but here is another problem:

In my script the curl command that should reach the server is -
curl -u 'user:password' -H "Content-Type: application/json" -X POST //api/add/ -d '{ "nodename": "server001", "address": "", "poolname": "serverpool1", "port": "80", "lbname" : "loadbalancer01" }'

but this is what is sent -
curl -u userpassword -H 'Content-Type: application/json' -X POST //api/add/ -d '{ "nodename": "server001", "address": "", "poolname": "serverpool1", "port": "80", "lbname" : "loadbalancer01" }'

I've tried different ways for escape like \ ` and other combinations of but it's just not working.

Thanks again for any help on this.

Last edited by yort; 08-19-2017 at 06:04 AM.. Reason: smiley
# 5  
Old 08-19-2017
Without the command that you issue in the context that it's used it's not that easy to analyse what's going wrong.

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Unable to open input kickstart file curl#37

Hi, Getting the below error while installing from ks.cfg unable to open input kickstart file curl#37 Couldn't open file /tmp/swappart Here am trying to include /tmp/swappart file from pre section under disks and partition section. Dont know where exactly am doing wrong My kickstart file... (3 Replies)
Discussion started by: Sumanthsv
3 Replies

2. Shell Programming and Scripting

For in loop - two input variables

When I create a newfile, I am using the filename as a variable to create the new filename. When I ouput it, the filename contains the file extension in the middle of the file example: router1.txtshcdpneighbors.txt router2.logshcdpneighbors.txt My initial approach was to strip it out, now I... (2 Replies)
Discussion started by: dis0wned
2 Replies

3. UNIX for Dummies Questions & Answers

While loop, input from find command

Hello nix Experts, I am a *nix rookie and have run into this issue, can some one help me here and let me know what I am doing wrong. /home/user1> while read n > do > echo $n > done < <(find . -type f -ctime -1 | grep abc) I am getting the below error: -sh: syntax error near... (5 Replies)
Discussion started by: babyPen1985
5 Replies

4. Shell Programming and Scripting

How to read each line from input file, assign variables, and echo to output file?

I've got a file that looks like this (spaces before first entries intentional): 12345650-000005000GL140227 ANNUAL HELC FEE EN 22345650-000005000GL140227 ANNUAL HELC FEE EN 32345650-000005000GL140227 ANNUAL HELC FEE EN I want to read through the file line by line,... (6 Replies)
Discussion started by: Scottie1954
6 Replies

5. Shell Programming and Scripting

Passing variables to an input file

Hi All, I have to insert 2 values to a text file in specific places. I have been able to extract each variable value via a script but am not able to send these variable values to the text file. Pasted is the script for extracting the variable values: for i in `ls -1` ... (2 Replies)
Discussion started by: danish0909
2 Replies

6. Shell Programming and Scripting

Curl - input line by line from text file

Hi, I've got a text file with hundreds of lines I need to upload to an API via curl, one by one. The text file is like: 2012-08-01 10:45,124 2012-08-02 10:45,132 2012-08-03 10:45,114 I want to get curl to go through the text file sending a post for each line. like: curl --request... (0 Replies)
Discussion started by: emdeex
0 Replies

7. Shell Programming and Scripting

Setting Variables WITHIN For Loop in DOS Command Shell

I'm wondering if any of you could lend an assist with a small problem. First, I'm under the impression I need to use Delayed Environment Variable Expansion (DEVE), based on other things I've read across the web. Summary: trying to use command shell (cmd.exe) in XP sp3 (if that's relevant) to... (4 Replies)
Discussion started by: ProGrammar
4 Replies

8. Shell Programming and Scripting

For loop using input file doesn't expand variables

Hi, I'm using a for loop reading from an input file that contains files, whose path includes a variable name. But the for loop doesn't expand the variable and therefore can't find the file. Here's an example: File BACKUPFILES /home/John/alpha /home/Sue/beta... (8 Replies)
Discussion started by: Hesiod
8 Replies

9. Shell Programming and Scripting

how to create variables in loop and assign filename after set command?

Hi, does anybody knows how to manage, that the filenames are assigned to a variable in a loop afer getting them with set command in a ksh, like: set B*.txt i=1 c=$# x=$((c+1)) echo "$x" while ] ; do _ftpfile$i="$"$i echo "$_ftpfile$i" i=$((i+1)) done The first echo returns,... (2 Replies)
Discussion started by: spidermike
2 Replies

10. Shell Programming and Scripting

read command (input) inside the while loop

Hi, 'read' command is not working inside the while loop, How can I solve this? Rgds, Sharif. (2 Replies)
Discussion started by: sharif
2 Replies

Featured Tech Videos