Как я могу разделить переменную, чтобы распечатать что-то еще между строк? - PullRequest
0 голосов
/ 17 октября 2019

Я создал скрипт, который просто показывает мне мой IP. Я сделал так, чтобы при выводе на терминал IP-адреса была «коробка» вокруг IP-адреса.

Вывод выглядит так:

----------------------------------------------------
||                                                ||
||                inet 10.0.2.15                  ||
||                                                ||
----------------------------------------------------

Теперь я создал скрипт, который сканируетдля открытых портов, где я также хотел бы иметь такую ​​«коробку» вокруг выхода, но я не знаю, как это реализовать, поскольку не всегда одинаковое количество открытых портов, а также потому, что порты выводятся на несколько строк ивсе хранятся в одной переменной. Что означает, что я не могу поставить эти "||"на каждой строке. Как я могу разделить переменную на столько строк, сколько есть открытых портов, и создать вокруг нее поле, независимо от того, есть ли 3 или 50 открытых портов?

Пока мой код:

#! /bin/bash

#User input
echo -n 'Enter target-IP: '
read target

#Portscan
ports=$( nmap -sS $target | grep open)

#Output
echo'-------------------------'
echo "$ports"
echo'-------------------------'

Что я хочу, чтобы вывод на терминал был:

----------------------------------------------------
||                                                ||
||    21/tcp open ftp                             ||
||    22/tcp open ssh                             ||
||    23/tcp open telnet                          ||                  
||                                                ||
----------------------------------------------------

Если что-то неясно, просто спросите, так как я не уверен, смогу ли я описать мою проблему достаточно хорошо.

1 Ответ

1 голос
/ 17 октября 2019

У вас есть много вариантов форматирования, awk, bash, ... Например (bash)

echo "$ports" | while read x ; do
    printf "||        %-20s ||\n" "$x"
done
...