Ler arquivo .txt e exportar para variável de ambiente

1. Ler arquivo .txt e exportar para variável de ambiente

Gilcimar Erthal
Gil

(usa Debian)

Enviado em 22/06/2023 - 22:37h

Olá pessoal, tudo bem?

Faz pouco tempo que retomei meus estudos e gostaria de uma ajuda da comunidade se possível.
Preciso fazer um shell script que leia um arquivo .txt (que vai conter endereços IP e destes endereços IP, eu precisaria exportar para uma variável de ambiente para ser inserido em um comando create_task do openvas.

O arquivo texto ficaria assim:
10.0.0.1
10.0.0.2
10.0.0.3

O shell script precisaria ler este arquivo e enviá-lo para uma variável de ambiente separado por virgulas. Os dados da variável de amiente ficariam assim:
IP = 10.0.0.1,10.0.0.2,10.0.0.3

Posteriormente eu uso essa variável de ambiente IP no openvas para criar uma tarefa automatizada.

Meu arquivo shell está assim:

#!/bin/bash
while read line; do
export IP = $line+","
done < ips.txt

Parece muito boba a execução, mas não consigo fazer exportar os IPs para a variável de ambiente. Se alguém puder ajudar agradeço!!

Gil


  


2. Re: Ler arquivo .txt e exportar para variável de ambiente

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 23/06/2023 - 00:31h


Gil escreveu:

Olá pessoal, tudo bem?

Faz pouco tempo que retomei meus estudos e gostaria de uma ajuda da comunidade se possível.
Preciso fazer um shell script que leia um arquivo .txt (que vai conter endereços IP e destes endereços IP, eu precisaria exportar para uma variável de ambiente para ser inserido em um comando create_task do openvas.

O arquivo texto ficaria assim:
10.0.0.1
10.0.0.2
10.0.0.3

O shell script precisaria ler este arquivo e enviá-lo para uma variável de ambiente separado por virgulas. Os dados da variável de amiente ficariam assim:
IP = 10.0.0.1,10.0.0.2,10.0.0.3

Posteriormente eu uso essa variável de ambiente IP no openvas para criar uma tarefa automatizada.

Meu arquivo shell está assim:

#!/bin/bash
while read line; do
export IP = $line+","
done < ips.txt

Parece muito boba a execução, mas não consigo fazer exportar os IPs para a variável de ambiente. Se alguém puder ajudar agradeço!!
Gil

Boa noite Gil, segue ajuda.....
#!/usr/bin/env bash

exporta_var(){
export ips="$(paste -sd"," ip.txt)";
}

[[ $0 =~ (/bin/bash$) ]] && exporta_var || echo -e "Uso:\n. ${0/.\/}"


Obs.:Execute:
. script.sh ##pontoespaçoNOMEDOSCRIPT
______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



3. Re: Ler arquivo .txt e exportar para variável de ambiente

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 23/06/2023 - 00:34h

IP="$(set --; set $(<ips.txt); eval eval echo \\\${1..$#} | xargs echo IP= | tr " " ",")"
Resultado
IP=,10.0.0.1,10.0.0.2,10.0.0.3,10.0.0.4,10.0.0.5,10.0.0.6,10.0.0.7,10.0.0.8,10.0.0.9,10.0.0.10
só falta tirar a , colada no igual
ou sem o tr
IP="$(set --; set $(<ips.txt); eval eval echo \\\${1..$#} | xargs)"
IP= 10.0.0.1, 10.0.0.2, 10.0.0.3, 10.0.0.4, 10.0.0.5, 10.0.0.6, 10.0.0.7, 10.0.0.8, 10.0.0.9, 10.0.0.10,
fica com , e espaço
mas eu gostei mais da resposta do msoliver
IP="$(paste -sd"," ip.txt)"
muito mais enxuto


4. Re: Ler arquivo .txt e exportar para variável de ambiente

Gilcimar Erthal
Gil

(usa Debian)

Enviado em 23/06/2023 - 10:51h


Vou testar aqui assim que possível e dou o retorno.

Muito obrigado até o momento pessoal!!

Gil


5. Re: Ler arquivo .txt e exportar para variável de ambiente

Adriano Siqueira
adrisiq

(usa KDE Neon)

Enviado em 23/06/2023 - 21:33h

Cheguei nessa solução, mas precisa remover a última virgula que fica sobrando:
#!/bin/bash

FILE="ip.txt"

# Variavel vazia
IP=

while read line; do
IP="${line},${IP}"
done < "${FILE}"

# Mude o echo pelo export
echo "${IP}"


Exemplo de entrada:
1.1.1.1
2.2.2.2
3.3.3.3


Exemplo de saída:
3.3.3.3,2.2.2.2,1.1.1.1, 



6. Re: Ler arquivo .txt e exportar para variável de ambiente

Adriano Siqueira
adrisiq

(usa KDE Neon)

Enviado em 30/06/2023 - 19:58h

O tópico é meio antigo, mas aqui vai uma solução mais bem elaborada:
#!/usr/bin/env bash

function fileNotProvided() {
local file="${1}"

[[ "${file}" == "" || ! -f "${file}" ]]
}

function processResult() {
local content="${1}"

# To export, invert the comment between 'echo' and 'export'
echo "${content}"
#export IP="${content}"
}

function trimComma() {
local string="${1}"
local length="${#string}"

local firstCharacter="${string:0:1}"
local lastCharacter="${string:${length}-1:${length}}"

if [[ "${firstCharacter}" == "," ]]; then
string="${string:1:${length}}"
((--length))
fi

if [[ "${lastCharacter}" == "," ]]; then
string="${string:0:${length}-1}"
((--length))
fi

echo "${string}"
}

function runScript() {
local file="${1}"
local result

if fileNotProvided "${file}"; then
echo "[ E ]: Provide the file in the argument."
echo " ${0} file.txt"
return 1
fi

while read -r line; do
result="${result},${line}"
done < "${file}"

result="$(trimComma "${result}")"
processResult "${result}"
return 0
}

runScript "${1}"

Exemplo de entrada:
1.1.1.1
2.2.2.2
3.3.3.3

Exemplo de saída
1.1.1.1,2.2.2.2,3.3.3.3 

Utilização:
./script.sh arquivo-para-ler.txt 



7. Re: Ler arquivo .txt e exportar para variável de ambiente

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 30/06/2023 - 22:45h


achei uma forma aqui, achei bacana!
Ip=$(echo $(<ips.txt)|tr ' ' ',')
e dá um
echo $Ip
só pra confirmar






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts