Usando un gestore di protocollo personalizzato in Firefox per eseguire uno script di shell?

4

Quello che mi piacerebbe fare è essere in grado di avviare programmi esterni da collegamenti in un sito web locale.

Ho definito un gestore di protocollo personalizzato in firefox impostando le seguenti variabili in about: config

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

Questo fa sì che firefox apra una finestra di dialogo di 'avvio dell'applicazione' quando faccio clic su un link nel formato myprotocol:///path_to_program_I_want_to_run , quindi sfoglio lo script della shell che voglio usare e dico a firefox di eseguirlo. Sfortunatamente lo script non sembra essere eseguito affatto.

Ho impostato i permessi del file su 777, quindi firefox non dovrebbe avere problemi a eseguirlo

Lo script di shell originariamente conteneva solo la riga


L'idea è che il percorso del collegamento sarebbe passato come primo argomento e sarebbe stato immediatamente eseguito come un programma. Questo ha funzionato bene quando ho eseguito lo script da solo usando comandi come

#./run_program.sh gedit 

o

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

Lo script ora per scopi di test contiene solo la riga

echo "testing" > /testing/file.txt

dove 'testing' è una directory con 777 autorizzazioni. Nota anche che /testing/ si trova effettivamente nella radice del mio filesystem (anche se non riesco a ricordare perché lo metto lì!), Quindi non mi sono confuso tra i percorsi relativi e assoluti

Di nuovo, questo funziona perfettamente bene quando lo eseguo dal terminale e file.txt viene creato nella giusta posizione. Con firefox però, mi viene data la possibilità di scegliere un'applicazione da eseguire, scelgo lo script di shell e non sembra che faccia nulla. file.txt non è stato creato affatto, sebbene non ci siano problemi di permessi che posso vedere. Quindi Firefox non sembra che stia eseguendo lo script.

Ho anche provato a cambiare il mio about:config per contenere

network.protocol-handler.expose.camara;true

e

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

senza successo

    
posta user1092284 09.07.2012 - 15:24

1 risposta

1

Trovato il problema

Non ho inserito #!/bin/bash nella parte superiore del file. Fondamentalmente pensavo allo script della shell come un eseguibile binario o qualcosa del genere, piuttosto che come uno script interpretato, perché non avevo bisogno di quella riga per eseguirlo direttamente nel terminale. Ho dimenticato che per eseguirlo da un altro programma deve essere eseguito attraverso bash

Quindi, una volta che quella linea è in cima allo script, puoi scegliere lo script di shell da firefox come programma per eseguire i tuoi collegamenti personalizzati, e il link verrà passato con successo nello script come primo argomento.

    
risposta data user1092284 16.07.2012 - 18:21

Leggi altre domande sui tag