Usando um manipulador de protocolo personalizado no Firefox para executar um script de shell?

4

O que eu gostaria de fazer é iniciar programas externos a partir de links em um site local.

Eu defini um manipulador de protocolo personalizado no firefox definindo as seguintes variáveis em about: config

network.protocol-handler.external.myprotocol;true
network.protocol-handler.warn-external.myprotocol;true

Isso faz com que o firefox abra uma caixa de diálogo 'iniciar aplicativo' quando clico em um link no formulário myprotocol:///path_to_program_I_want_to_run e, em seguida, navego até o shell script que desejo usar e digito ao firefox para executá-lo. Infelizmente, o roteiro não parece estar sendo executado.

Eu configurei as permissões de arquivo para o 777, para que o Firefox não tenha nenhum problema em executá-lo

O script de shell originalmente continha apenas a linha


A ideia é que o caminho do link seria passado como o primeiro argumento e seria imediatamente executado como um programa. Isso funcionou bem quando eu mesmo executei o script usando comandos como

#./run_program.sh gedit 

ou

#./run_program.sh /home/ciaran/test_program

O script agora para fins de teste contém apenas a linha

echo "testing" > /testing/file.txt

em que 'testing' é um diretório com 777 permissões. Observe também que /testing/ está localizado na raiz do meu sistema de arquivos (embora eu não consiga lembrar por que o coloquei lá!), Então eu não acabei de me misturar entre os caminhos relativo e absoluto

Novamente, isso é executado perfeitamente quando eu o executo no terminal e file.txt é criado no local correto. Com o firefox, porém, eu tenho a opção de escolher um aplicativo para rodar, eu escolho aquele script de shell, e ele não parece fazer nada. file.txt não é criado, embora não haja problemas de permissão que eu possa ver. Então, o firefox parece não estar rodando o script.

Eu também tentei alterar meu about:config para conter

network.protocol-handler.expose.camara;true

e

network.protocol-handler.app.camara;path/to/shell/script

sem sucesso

    
por user1092284 09.07.2012 / 15:24

1 resposta

1

Encontrou o problema

Eu não coloquei #!/bin/bash no topo do arquivo. Eu estava basicamente pensando no shell script da mesma maneira que um executável binário ou algo assim, ao invés de um script interpretado, porque eu não precisava daquela linha para executá-lo diretamente no terminal. Esqueci que para executá-lo a partir de outro programa, ele deve ser executado através de bash

Portanto, uma vez que a linha esteja no topo do script, você pode escolher o shell script do firefox como o programa para executar seus links personalizados e o link será passado com sucesso para o script como o primeiro argumento.

    
por user1092284 16.07.2012 / 18:21