Comandi da programma

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
Grifone
Linux 1.x
Linux 1.x
Messaggi: 114
Iscritto il: mer 17 ott 2007, 23:06
Slackware: 12.0
Località: Genova

Re: Comandi da programma

Messaggio da Grifone »

414N ha scritto:Probabilmente hai sbagliato a immettere il path completo del programma, se ti dice command not found...
Bhe io vorrei eseguire da utente normale pppoe-start per esempio, allora nel file sudoers ho messo il percorso /usr/sbin/pppoe-start dove in effetti è il comando

Avatar utente
JohnnyMnemonic
Staff
Staff
Messaggi: 2733
Iscritto il: dom 5 set 2004, 0:00
Nome Cognome: Giuseppe Palmiotto
Slackware: 14.0
Kernel: 3.5.5-thanatos
Località: Bologna
Contatta:

Re: Comandi da programma

Messaggio da JohnnyMnemonic »

Si ma /usr/sbin non fa parte del tuo PATH
Verificalo con

Codice: Seleziona tutto

echo $PATH

Avatar utente
Grifone
Linux 1.x
Linux 1.x
Messaggi: 114
Iscritto il: mer 17 ott 2007, 23:06
Slackware: 12.0
Località: Genova

Re: Comandi da programma

Messaggio da Grifone »

JohnnyMnemonic ha scritto:Si ma /usr/sbin non fa parte del tuo PATH
Verificalo con

Codice: Seleziona tutto

echo $PATH

Codice: Seleziona tutto

/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/java/bin:/usr/lib/java/jre/bin:/usr/lib/qt/bin:/usr/share/texmf/bin:
Quindi se metto pppoe-start in /usr/bin/ (ad esempio) poi posso farlo partire da utente normale?

Avatar utente
JohnnyMnemonic
Staff
Staff
Messaggi: 2733
Iscritto il: dom 5 set 2004, 0:00
Nome Cognome: Giuseppe Palmiotto
Slackware: 14.0
Kernel: 3.5.5-thanatos
Località: Bologna
Contatta:

Re: Comandi da programma

Messaggio da JohnnyMnemonic »

Potresti fare un link simbolico
Può darsi che ci siano soluzioni più pulite ma non mi vengono in mente al momento

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: Comandi da programma

Messaggio da cymon »

Grifone ha scritto:
414N ha scritto:Probabilmente hai sbagliato a immettere il path completo del programma, se ti dice command not found...
Bhe io vorrei eseguire da utente normale pppoe-start per esempio, allora nel file sudoers ho messo il percorso /usr/sbin/pppoe-start dove in effetti è il comando
Ma poi lo hai invocato scrivendo /usr/sbin/pppoe-start
o solo con
pppoe-start?
Nel secondo caso non funzionerà mai, perchè a prescindere dai sudoers, come ti hanno già detto, il sistema non troverà il comando indicato.
Visto che è una cosa da cablare in codice secondo me la soluzione più pulita è invocarlo con tutto il path...

Avatar utente
Grifone
Linux 1.x
Linux 1.x
Messaggi: 114
Iscritto il: mer 17 ott 2007, 23:06
Slackware: 12.0
Località: Genova

Re: Comandi da programma

Messaggio da Grifone »

JohnnyMnemonic ha scritto:Potresti fare un link simbolico
Può darsi che ci siano soluzioni più pulite ma non mi vengono in mente al momento
Ho provato a fare un link simbolico (da root) e mi dice "You must be root to run this script" Alchè con chmod ho impostato i diritti

Codice: Seleziona tutto

# chmod 777 <nome link>
ma la musica non cambia.Perchè?

Avatar utente
gioco
Packager
Packager
Messaggi: 900
Iscritto il: dom 19 giu 2005, 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Re: Comandi da programma

Messaggio da gioco »

JohnnyMnemonic ha scritto:Potresti fare un link simbolico
Può darsi che ci siano soluzioni più pulite ma non mi vengono in mente al momento
Una è usare un alias in ~/.bashrc:

Codice: Seleziona tutto

alias pppoe-start="sudo /usr/sbin/pppoe-start"

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: Comandi da programma

Messaggio da cymon »

Grifone ha scritto:
JohnnyMnemonic ha scritto:Potresti fare un link simbolico
Può darsi che ci siano soluzioni più pulite ma non mi vengono in mente al momento
Ho provato a fare un link simbolico (da root) e mi dice "You must be root to run this script" Alchè con chmod ho impostato i diritti

Codice: Seleziona tutto

# chmod 777 <nome link>
ma la musica non cambia.Perchè?
i diritti del link simbolico sono propri del link simbolico e non del programma che linka. Anche perché altrimenti non riusciresti a dargli il 777, visto che sarebbe un altro buco di sicurezza. Solo root può cambiare i permessi dei suoi file e renderli accessibili a tuto il mondo.
Ma, è noto, rendere accessibili a tutto il mondo i file di root è IL MALE, quindi niente chmod 777 sullo /usr/sbin/pppoe-start :D
L'alias è probabilmente la via migliore.

Avatar utente
Grifone
Linux 1.x
Linux 1.x
Messaggi: 114
Iscritto il: mer 17 ott 2007, 23:06
Slackware: 12.0
Località: Genova

Re: Comandi da programma

Messaggio da Grifone »

Perfetto, creando l'alias sono riuscito ad impostare i comandi anche da utente normale :).Grazie a tutti

EDIT:
non riesco però a farli eseguire con la funzione system :( se faccio system(pppoe-start) mi dice : sh: pppoe-start: command not found. Eppure da terminale riesco a farlo andare da utente non-root!! :(

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: Comandi da programma

Messaggio da cymon »

Grifone ha scritto:Perfetto, creando l'alias sono riuscito ad impostare i comandi anche da utente normale :).Grazie a tutti

EDIT:
non riesco però a farli eseguire con la funzione system :( se faccio system(pppoe-start) mi dice : sh: pppoe-start: command not found. Eppure da terminale riesco a farlo andare da utente non-root!! :(
La working directory del programma qual è?
Forse è meglio se inserisci sempre tutto il path nella chiamata di system.

Avatar utente
Grifone
Linux 1.x
Linux 1.x
Messaggi: 114
Iscritto il: mer 17 ott 2007, 23:06
Slackware: 12.0
Località: Genova

Re: Comandi da programma

Messaggio da Grifone »

gioco ha scritto:
JohnnyMnemonic ha scritto:Potresti fare un link simbolico
Può darsi che ci siano soluzioni più pulite ma non mi vengono in mente al momento
Una è usare un alias in ~/.bashrc:

Codice: Seleziona tutto

alias pppoe-start="sudo /usr/sbin/pppoe-start"
Non ho capito dove devo mettere l'alias me lo potresti spiegare?

Avatar utente
gioco
Packager
Packager
Messaggi: 900
Iscritto il: dom 19 giu 2005, 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Re: Comandi da programma

Messaggio da gioco »

Nel file .bashrc nella tua home. Ovvero $HOME/.bashrc. Ovvero ~/.bashrc. Ovvero /home/$(whoami)/.bashrc.
Se quel file non esiste lo devi creare e lo devi rendere eseguibile con

Codice: Seleziona tutto

chmod +x $HOME/.bashrc
.
Il nome del file è comprensivo del '.' iniziale, che nei sistemi *NIX indica che il file è nascosto.

Avatar utente
Mithenks`
Linux 0.x
Linux 0.x
Messaggi: 21
Iscritto il: dom 25 mag 2008, 12:54
Slackware: 12.1
Località: Salerno/Siena
Contatta:

Re: Comandi da programma

Messaggio da Mithenks` »

Io direi che se non vuoi invocare il programma usando tutto il path,
un'altra soluzione potrebbe essere usare which:

Codice: Seleziona tutto

system("sudo `which ppoe-start`");
EDIT:
Negativo, non và :)
C'è l'opzione -i che sembrava fare al caso tuo, ma funziona solo se apri una vera e propria shell.
Probabilmente sudo per ragioni di sicurezza mantiene la path dell'utente che lancia il comando,
cosa che penso possa essere tolta dal file di configurazione.

Avatar utente
Vortagor
Linux 0.x
Linux 0.x
Messaggi: 12
Iscritto il: sab 27 ott 2007, 13:51
Slackware: 12.0

Re: Comandi da programma

Messaggio da Vortagor »

dopo mesi son tornato a Slackware che non tradisce mai (altro che Windows che mi ha fatto partire un altro HD), e per non dilungarmi troppo uppo questo 3d dato che ho un problema simile e non riesco a risolverlo. Vorrei che ad ogni avvio mi si connettesse in automatico a internet, mentre ora devo aprire una shell, loggarmi come root ed eseguire pppoe-star. Come posso fare?

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Comandi da programma

Messaggio da conraid »

Vortagor ha scritto:dopo mesi son tornato a Slackware che non tradisce mai (altro che Windows che mi ha fatto partire un altro HD), e per non dilungarmi troppo uppo questo 3d dato che ho un problema simile e non riesco a risolverlo. Vorrei che ad ogni avvio mi si connettesse in automatico a internet, mentre ora devo aprire una shell, loggarmi come root ed eseguire pppoe-star. Come posso fare?
Mettilo in rc.local

Rispondi