[英]Bash Script read hostnames from .txt file and place in variable for ssh
[英]Read txt file and parse the values to bash script
我有以下bash脚本:
#!/bin/bash
filename='config.txt'
while filename = read -r line do
for file in $(find /home/user/ftpuser -maxdepth 1 -name "*.[ew]ar" -type f); do
/apps/oracle/jrockit/4.1.0-1.6.0_37-R28.2.5-x86_64/bin/java -jar ../windup-cli-0.6.8/windup-cli.jar -javaPkgs com.lib - input ../ftpuser/ -output ../reports/ "${file}"
cp "${file}" /home/user/ftpuser/scanned/
done < "$filename"
sleep 60
done
该脚本需要在目录中找到两种类型的文件。 .ear和.war文件。 完成后,它会执行一个命令,该命令将报告以前在/ reports目录中找到的文件。 下一步是将在第一步中找到的所有文件复制到一个名为scand的目录中。 我的问题集中在我正在执行以生成报告的命令中。 在此命令中,有-javaPkgs com.lib。 我需要从配置文件中读取此值。脚本需要从配置文件中读取值并将它们分配给脚本,因此,每次更改配置文件中的值时,都可以使用不同的值执行脚本。 我的问题是我该怎么做? 我已经在上面尝试做一些事情,但是没有用。
在下面您还可以看到配置文件。
config.txt
targetHostName=10.125.162.132
packages=com.ibm,com.jboss
path=/home/user/ftpuser/reports
username=root
password=root
以下将为您提供您想要报告的软件包列表 :
grep "^packages" config.txt | cut -d= -f2 | tr ',' ' '
基于此,您可以循环搜索列表中的值:
filename="config.txt"
for i in $(grep "^packages" $filename | cut -d= -f2 | tr ',' ' '); do
for file in $(find /home/user/ftpuser -maxdepth 1 -name "*.[ew]ar" -type f); do
echo /apps/oracle/jrockit/4.1.0-1.6.0_37-R28.2.5-x86_64/bin/java -jar ../windup-cli-0.6.8/windup-cli.jar -javaPkgs ${i} - input ../ftpuser/ -output ../reports/ "${file}"
cp "${file}" /home/user/ftpuser/scanned/
done
done
这是我如何使用它的方式:
#!/bin/bash
config_file='./config.txt' ## If you want to pass your configuration as an argument, use config_file=$1
. "$config_file"
while read -r file do
/apps/oracle/jrockit/4.1.0-1.6.0_37-R28.2.5-x86_64/bin/java -jar ../windup-cli-0.6.8/windup-cli.jar -javaPkgs com.lib - input ../ftpuser/ -output ../reports/ "${file}"
cp "${file}" /home/user/ftpuser/scanned/
sleep 60
done < <(exec find /home/user/ftpuser -maxdepth 1 -name '*.[ew]ar' -type f)
该脚本将读取config_file.txt
作为另一个为变量分配值的源文件。 这样,您就可以将这些变量用作$targetHostName
, $packages
, $path
, $username
和$password
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.