如何使用shell

时间:2017-11-23 07:18:11

标签: mysql database shell

我有一个场景,我有一个数据库表有3列实例名称和版本,必须包含jenkins实例的数据和插件与版本一起安装...我有一个文本文件,其中包含详细信息名称和版本以及我必须插入名称和版本的代码是

input_file="test.txt"
cat $input_file | while read plugin version; do
        echo "INSERT INTO table_name (version,pluginname)  VALUES('$version' ,'$pluginname');"
done | mysql -user_root -db_password dbname;

现在我被困在这里如何在数据库中插入实例值。 文本文件包含所有实例的数据,即通过解析JSON API获得的插件名称和版本

curl -u user:<api-token> -s -k "https://<jenkins instance>/pluginManager/api/json?depth=1" | jq '.plugins[]|{version,longName}' -c  | sed 's/\"//g' | sed 's/,/:/g' | cut -d ":" -f2,4 > test.txt

由于插件名称和版本的数据由文本文件拾取,我可以这样做,但我不知道如何在实例列中添加数据。总共添加了6个实例。 该数据库表的样本将是

instance     plugin  version
instance1    plugin1  ver 1
instance1    plugin2  ver2
.....
instance2    plugin1  ver1
instance2    plugin2  ver2
......
......
instance3    plugin1   ver1
instance3    plugin2   ver2
.....

必须对所有6个实例进行此操作

我该怎么办? 在此先感谢您的回答

1 个答案:

答案 0 :(得分:0)

我猜你有多个Jenkins实例要调用。如果你有一个他们的名字列表,那么你可以遍历那个列表,调用curl来获取插件列表及其版本并生成SQL语句,包装原始脚本:

for instance in $instance_list; do
    curl ... | jq ... | ... > plugins.txt
    while read plugin version; do
        echo "INSERT INTO table_name (instance, version,pluginname)  VALUES('$instance', '$version' ,'$pluginname');"
    done < plugins.txt | mysql -user_root -db_password dbname
done