2 votes

Sortie d'un lien cliquable dans le terminal

Je veux echo une URL cliquable sur ZSH/Terminal. L'URL correspond à une requête Kibana, ce qui signifie qu'elle contient beaucoup de caractères bizarres. Pour des raisons techniques, je ne peux pas utiliser de liens Kibana "raccourcis".

read -r the_url << \EOF
https://log-service.com/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-1h,to:now))&_a=(columns:!(correlation_id,application,level,description),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'*:log-2',key:correlation_id,negate:!f,params:(query:hello-there),type:phrase),query:(match_phrase:(correlation_id:hello-again)))),index:'*:log-2',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))
EOF
echo "logs at:"
echo "$the_url"

Le problème est le suivant : Lorsque j'essaie de commander un clic sur le lien, celui-ci n'est que partiellement interprété comme un lien hypertexte. Par conséquent, seule une partie de l'url est transmise au navigateur et Kibana ne se charge pas correctement. Je suis bien en dessous de la limite de 1000 caractères de certains navigateurs.

Existe-t-il un moyen de faire en sorte que ZSH + Terminal interprète correctement mon URL ?

3voto

Martin J.H. Points 141

Un collègue a trouvé une solution : coder l'URL des parties qui font trébucher le terminal. (L'encodage de toutes les URL ne fonctionne pas, car Kibana ne peut alors plus les lire).

#!/bin/bash

read -r the_url << \EOF
https://log-service.com/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-1h,to:now))&_a=(columns:!(correlation_id,application,level,description),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'*:log-2',key:correlation_id,negate:!f,params:(query:hello-there),type:phrase),query:(match_phrase:(correlation_id:hello-again)))),index:'*:log-2',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))
EOF

IFS='=' read -ra parts <<< "$the_url"

for i in "${parts[@]}"
do
   if [[ -z $url ]]; then
   # this is the first part of the URL, we want to keep it as-is
      url="$i"
   else
      # urlencode that part of the URL and append with an '='
      i=${i//\'/\%27}
      i=${i//\(/\%28}
      i=${i//\)/\%29}
      i=${i//\*/\%2a}
      url="$url=$i"
   fi
done

echo "logs at:"
echo "$url"

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X