2016-07-19 20 views
2

我有一個包含fqdn和主機名變量的文本文件。文件看起來像這樣如何在文件中使用curl命令數據?

first_fqnd first_hostname 
second_fqdn  second_hostname 
.....  ..... 

我必須更新bash腳本使用curl一些數據,但我不得不採取FQDN和主機名從這個文本文件,併爲每對FQDN和主機名捲曲。

我捲曲應該是這樣的:

curl -H "Content-Type:application/json" -XPUT "https://pup.pnet.pl/api/hosts/**fqdn from file**" -d '{"host":{"name": "**hostname from file**"}}' --cacert bundle.pem --cert xxx-pem.cer --key xxx-privkey.pem 

我如何通過這些變量從文件捲曲?我也想過用awk,但我不知道如何使用它curl命令

回答

5

使用while結構讀取文件的線,並把空格隔開的參數作爲兩個相關的變量,fqdnhostn

while read fqdn hostn; do 
    curl -H .... -XPUT "https://pup.pnet.pl/api/hosts/${fqdn}" \ 
     -d '{"host":{"name": "'"${hostn}"'"}}' --cacert ....; done <file.txt 
+0

「do」後不需要反斜槓 – Barmar

+0

@Barmar oops ..typo ..fixed .. – heemayl

2

嘗試這樣:

#!/bin/bash 

while read fqdn hostname; do 
    curl -H "Content-Type:application/json" -XPUT \ 
     "https://pup.pnet.pl/api/hosts/${fqdn}" \ 
     -d '{"host":{"name": "'${hostname}'}}' --cacert bundle.pem \ 
     --cert xxx-pem.cer --key xxx-privkey.pem 
done <input_file.txt 

while read fqdn hostname將採取從標準輸入逐行輸入,用bash的內部字段分隔符拆分爲「列」 v ariables $fqdn$hostname。有關更多信息,請參見Catching User Input

相關問題