如何通过ssh进入并发布命令以获取txt文件Jenkins中的IP地址列表

问题描述 投票:0回答:3

我有一个文本文件中的IP地址列表,希望在脚本中使用。这是在文本文件中输出IP地址的代码

openstack server list | grep agent | awk '{print \$9}' >> ${STACK}_list.txt

我想检索ip地址并通过ssh'in进入它们,但不知道如何使用而在循环中使用

bash shell jenkins openstack
3个回答
0
投票

请参阅这篇文章。script to read a file with IP addresses and login

可能对您有帮助。

谢谢。Subhadeep


0
投票

您可以使用正则表达式从服务器列表输出中过滤所有IP地址:

openstack server list | grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*'

如果需要,您可以将此输出通过管道传输到文件中,也可以在bash脚本中使用此输出,而无需将其写入文件即可进行如下操作:

#!/bin/bash
#

ADDRESSES=$(openstack server list | grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*')

for ADDRESS in $ADDRESSES
do
    echo "ip: $ADDRESS"
done

它从服务器列表输出中读取所有ip地址,并在for循环中对该输出进行迭代,并在终端上单独打印每个ip。代替echo,您可以插入ssh-command。

我的部署中的示例服务器:

root@m1r1:~# openstack server list
+--------------------------------------+-----------------------+--------+--------------------------+----------------+--------+
| ID                                   | Name                  | Status | Networks                 | Image          | Flavor |
+--------------------------------------+-----------------------+--------+--------------------------+----------------+--------+
| 46d04a77-4d33-4bb3-8214-b1444eed33a3 | server1               | ACTIVE | l2-network=192.168.4.131 | cirros         | XS     |
| e9489aca-00c3-4fc9-afc5-515c08b17406 | server2               | ACTIVE | l2-network=192.168.4.61  |                | XS     |
| ea8cec6a-a8d5-4bbb-970e-aaf65d7374b2 | server3               | ACTIVE | l2-network=192.168.4.163 | cirros         | S      |
| 7d934ec4-1d53-467b-9220-d67b4b68a832 | server4               | ACTIVE | l2-network=192.168.4.184 |                | XS     |
| 74d3036e-372a-4566-8ba2-10a0760c5562 | server5               | ACTIVE | l2-network=192.168.4.232 | cirros         | XS     |
| e08e1637-f4df-478d-a478-6578d038cb22 | server6               | ACTIVE | l2-network=192.168.4.190 |                | XS     |
| 8307a481-679e-4df0-a64e-3a497b13ac81 | server7               | ACTIVE | l2-network=192.168.4.202 |                | XS     |
| 38d10b12-daa5-483e-b9a5-9a16ba14d841 | server8               | ACTIVE | l2-network=192.168.4.250 | cirros         | XS     |
+--------------------------------------+-----------------------+--------+--------------------------+----------------+--------+

此示例的输出:

ip: 192.168.4.131
ip: 192.168.4.61
ip: 192.168.4.163
ip: 192.168.4.184
ip: 192.168.4.232
ip: 192.168.4.190
ip: 192.168.4.202
ip: 192.168.4.250

0
投票
#!/bin/sh

openstack server list | grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' > stack

while $(wc -l stack | cut -d' ' -f1) -gt 0 ]
do
  ipnumber=$(sed -n '1p' stack)
  echo "${ipnumber}"
  sed -i '1d' stack
done

echo命令只有一个占位符。您可以将ssh替换为ssh,也可以将其替换为变量中的IP地址。

© www.soinside.com 2019 - 2024. All rights reserved.