Você pode usar a ferramenta jq
(disponível via apt-get
) para isso.
Se o arquivo ip.json
tiver um objeto json, cada chave é um host diferente. Seguindo o seu exemplo (por qualquer motivo, você não pode usar local
alias no zsh sem ter problemas com a conclusão)
{
"Local": "127.0.0.1",
"remote": "192.168.0.5"
}
Você pode acrescentar isso ao seu arquivo zshrc
:
# Use jq to get all keys in the root object and create a loop
for host in $(jq --raw-output 'keys | .[]' ip.json); do
# Get the key value of these keys and create the alias
alias $host=ssh\ root@$(jq --raw-output ".$host?" ip.json)
done
Use man jq
para mais informações sobre essa ferramenta.