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 2.0
Linux 2.0
Messaggi: 114
Iscritto il: mer ott 17, 2007 23:06
Slackware: 12.0
Località: Genova

Re: Comandi da programma

Messaggioda Grifone » lun mag 19, 2008 21:09

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 set 05, 2004 0:00
Nome Cognome: Giuseppe Palmiotto
Slackware: 14.0
Kernel: 3.5.5-thanatos
Località: Bologna
Contatta:

Re: Comandi da programma

Messaggioda JohnnyMnemonic » lun mag 19, 2008 21:12

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

Codice: Seleziona tutto

echo $PATH

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

Re: Comandi da programma

Messaggioda Grifone » lun mag 19, 2008 21:19

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 set 05, 2004 0:00
Nome Cognome: Giuseppe Palmiotto
Slackware: 14.0
Kernel: 3.5.5-thanatos
Località: Bologna
Contatta:

Re: Comandi da programma

Messaggioda JohnnyMnemonic » lun mag 19, 2008 21:23

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.4
Linux 2.4
Messaggi: 430
Iscritto il: ven gen 05, 2007 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: Comandi da programma

Messaggioda cymon » lun mag 19, 2008 21:52

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 2.0
Linux 2.0
Messaggi: 114
Iscritto il: mer ott 17, 2007 23:06
Slackware: 12.0
Località: Genova

Re: Comandi da programma

Messaggioda Grifone » lun mag 19, 2008 21:55

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 giu 19, 2005 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Re: Comandi da programma

Messaggioda gioco » lun mag 19, 2008 22:15

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.4
Linux 2.4
Messaggi: 430
Iscritto il: ven gen 05, 2007 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: Comandi da programma

Messaggioda cymon » mar mag 20, 2008 0:10

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 2.0
Linux 2.0
Messaggi: 114
Iscritto il: mer ott 17, 2007 23:06
Slackware: 12.0
Località: Genova

Re: Comandi da programma

Messaggioda Grifone » mar mag 20, 2008 20:20

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.4
Linux 2.4
Messaggi: 430
Iscritto il: ven gen 05, 2007 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: Comandi da programma

Messaggioda cymon » mer mag 21, 2008 9:36

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 2.0
Linux 2.0
Messaggi: 114
Iscritto il: mer ott 17, 2007 23:06
Slackware: 12.0
Località: Genova

Re: Comandi da programma

Messaggioda Grifone » ven mag 23, 2008 19:15

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 giu 19, 2005 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Re: Comandi da programma

Messaggioda gioco » mar mag 27, 2008 15:57

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 1.0
Linux 1.0
Messaggi: 21
Iscritto il: dom mag 25, 2008 12:54
Slackware: 12.1
Località: Salerno/Siena
Contatta:

Re: Comandi da programma

Messaggioda Mithenks` » mar mag 27, 2008 16:18

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 1.0
Linux 1.0
Messaggi: 12
Iscritto il: sab ott 27, 2007 13:51
Slackware: 12.0

Re: Comandi da programma

Messaggioda Vortagor » lun giu 02, 2008 14:01

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: 12675
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: Comandi da programma

Messaggioda conraid » lun giu 02, 2008 15:03

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


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite