No Linux, usando Bash, tenho dois scripts:
script.sh
é o roteiro principal, escript_config.sh
é a configuração parascript.sh
.
Em script.sh
, eu source script_config.sh
carrego todas as configurações de lá.
Em script_config.sh
, eu faço coisas como:
TEMPDIR=/mnt/sda1/temp
Não sei se essa é a melhor maneira, mas para mim está tudo bem, tenho a configuração em um arquivo separado e posso carregá-la no script principal.
Em uma versão antiga do script.sh
, eu costumava shuf
ler um arquivo ( cipher_to_use.txt
) para obter uma entrada aleatória sobre qual cifra usar com cryptsetup
.
Em cipher_to_use.txt
, há apenas 6 cifras diferentes listadas, mas algumas linhas aparecem até 10 vezes, então shuf
as escolhi com mais frequência, mas ainda aleatoriamente. Isso funciona bem para mim.
Mas agora, com script_config.sh
, estou procurando uma maneira de continuar essa abordagem,
mas não quero escrever as 6 cifras mais de uma vez em script_config.sh
.
Como posso usar cifras diferentes com shuf
, mas fazer com que algumas apareçam com mais frequência do que outras, enquanto listo cada cifra apenas uma vez em script_config.sh
?
:editar
Obrigado nbanana pelas suas ideias, mas há alguma maneira de fazer algo um pouco diferente do seu jeito?
se eu escrever aqui script_config.sh
:
(chk = cifra tem chave)
chk1_name_="--cipher aes-cbc-essiv:sha256 --hash sha512 --key-size 256"
chk1_weigt="15"
chk2_name_="--cipher serpent-cbc-essiv:sha256 --hash sha512 --key-size 256"
chk2_weigt="1"
chk3_name_="--cipher twofish-cbc-essiv:sha256 --hash sha512 --key-size 256"
chk3_weigt="1"
chk4_name_="--cipher aes-xts-plain64 --hash sha512 --key-size 512"
chk4_weigt="4"
chk5_name_="--cipher serpent-xts-plain64 --hash sha512 --key-size 512"
chk5_weigt="1"
chk6_name_="--cipher twofish-xts-plain64 --hash sha512 --key-size 512"
chk6_weigt="1"
o que devo adicionar script.sh
para se tornar um ciphers_has_key_list
arquivo -
com 15 vezes no chk1, 1 chk2 e assim por diante...?
e se o chk6 não existir mais?
e se houver um chk7 e um chk8?
Você pode tentar ponderar cada cifra com um peso associado usando dois arrays bash simples e então gerar um arquivo temporário que você pode escanear mais tarde com
shuf
:cipher[i]
aparecerácipher_weight[i]
vezes em$file
.E agora você pode usar
shuff
em$file
NB:
$file
será diferente a cada execução do script e será removido na reinicialização. Se preferir remover o arquivo temporário criado, você pode adicioná-lo ao final doscript.sh
Isso deve fazer o trabalho que você deseja, mantendo apenas 1 entrada para cada cifra no arquivo de configuração
Se você está apenas tentando criar uma lista embaralhada de "cifras" com diferentes números de repetições por cifra, então:
Obviamente, altere os valores de repetição no início de cada linha de entrada para atender às suas necessidades.