Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.debian.user.catalan > #4177 > unrolled thread
| Started by | Narcis Garcia <informatica@actiu.net> |
|---|---|
| First post | 2016-03-19 16:30 +0100 |
| Last post | 2016-03-20 14:30 +0100 |
| Articles | 10 — 5 participants |
Back to article view | Back to linux.debian.user.catalan
Comanda su amb parametres diversos Narcis Garcia <informatica@actiu.net> - 2016-03-19 16:30 +0100
Re: Comanda su amb parametres diversos Ernest Adrogué <nfdisco@gmail.com> - 2016-03-19 18:00 +0100
Re: Comanda su amb parametres diversos Narcis Garcia <debianlists@actiu.net> - 2016-03-19 19:30 +0100
Re: Comanda su amb parametres diversos Ernest Adrogué <nfdisco@gmail.com> - 2016-03-19 20:50 +0100
Re: Comanda su amb parametres diversos Narcis Garcia <debianlists@actiu.net> - 2016-03-20 12:20 +0100
Re: Comanda su amb parametres diversos Ernest Adrogué <nfdisco@gmail.com> - 2016-03-20 13:30 +0100
Re: Comanda su amb parametres diversos Narcis Garcia <debianlists@actiu.net> - 2016-03-20 15:30 +0100
Re: Comanda su amb parametres diversos Eloi <entfe001@gmail.com> - 2016-03-20 10:30 +0100
Re: Comanda su amb parametres diversos Narcis Garcia <debianlists@actiu.net> - 2016-03-20 12:20 +0100
Re: Comanda su amb parametres diversos Alex Muntada <alexm@caliu.cat> - 2016-03-20 14:30 +0100
| From | Narcis Garcia <informatica@actiu.net> |
|---|---|
| Date | 2016-03-19 16:30 +0100 |
| Subject | Comanda su amb parametres diversos |
| Message-ID | <reqZb-1BQ-1@gated-at.bofh.it> |
A veure si algú domina el programa «su» (substitute user) per executar una comanda d'una manera que jo no me'n surto: Per posar un exemple, com a usuari «root» vull editar un fitxer especificat per l'usuari i amb algun paràmetre més per l'editor nano. Però tot això fer-ho a través d'un programet que crida su. Aquestes són les sintaxis amb les quals ho he intentat sense èxit (script "llansador.sh"): #!/bin/sh su root -c "$@" su root -- "$@" su root -c -- "$@" $ ./llansador.sh nano --boldtext "Un document.txt" Algú sap encertar l'ús dels dos guionets igual com fan altres interfícies? Nota: necessito NO comptar amb què «sudo» o altres programes menys essencials estiguin instal·lats.
[toc] | [next] | [standalone]
| From | Ernest Adrogué <nfdisco@gmail.com> |
|---|---|
| Date | 2016-03-19 18:00 +0100 |
| Message-ID | <resoi-2u4-3@gated-at.bofh.it> |
| In reply to | #4177 |
2016-03-19, 16:10 (+0100); Narcis Garcia escriu: > A veure si algú domina el programa «su» (substitute user) per executar > una comanda d'una manera que jo no me'n surto: > > Per posar un exemple, com a usuari «root» vull editar un fitxer > especificat per l'usuari i amb algun paràmetre més per l'editor nano. > Però tot això fer-ho a través d'un programet que crida su. > Aquestes són les sintaxis amb les quals ho he intentat sense èxit > (script "llansador.sh"): > > #!/bin/sh > su root -c "$@" > su root -- "$@" > su root -c -- "$@" > > $ ./llansador.sh nano --boldtext "Un document.txt" > > > Algú sap encertar l'ús dels dos guionets igual com fan altres interfícies? > > Nota: necessito NO comptar amb què «sudo» o altres programes menys > essencials estiguin instal·lats. > su -- -c "$@" l'opció -c és de la shell no del 'su', per tant ha d'anar després dels 2 guionets.
[toc] | [prev] | [next] | [standalone]
| From | Narcis Garcia <debianlists@actiu.net> |
|---|---|
| Date | 2016-03-19 19:30 +0100 |
| Message-ID | <retNn-3yP-1@gated-at.bofh.it> |
| In reply to | #4179 |
Fet d'aquestes maneres no es queixa, però només passa el primer paràmetre i no els següents: su root -- -c "$@" su -- -c "$@" És a dir, que si executo: ./llansador.sh nano --boldtext "Un document.txt" Només té efecte el "nano"; la resta és ignorat. __________ I'm using this express-made address because personal addresses aren't masked enough at lists.debian.org archives. El 19/03/16 a les 17:33, Ernest Adrogué ha escrit: > 2016-03-19, 16:10 (+0100); Narcis Garcia escriu: >> A veure si algú domina el programa «su» (substitute user) per executar >> una comanda d'una manera que jo no me'n surto: >> >> Per posar un exemple, com a usuari «root» vull editar un fitxer >> especificat per l'usuari i amb algun paràmetre més per l'editor nano. >> Però tot això fer-ho a través d'un programet que crida su. >> Aquestes són les sintaxis amb les quals ho he intentat sense èxit >> (script "llansador.sh"): >> >> #!/bin/sh >> su root -c "$@" >> su root -- "$@" >> su root -c -- "$@" >> >> $ ./llansador.sh nano --boldtext "Un document.txt" >> >> >> Algú sap encertar l'ús dels dos guionets igual com fan altres interfícies? >> >> Nota: necessito NO comptar amb què «sudo» o altres programes menys >> essencials estiguin instal·lats. >> > > su -- -c "$@" > > l'opció -c és de la shell no del 'su', per tant ha d'anar després dels 2 > guionets. >
[toc] | [prev] | [next] | [standalone]
| From | Ernest Adrogué <nfdisco@gmail.com> |
|---|---|
| Date | 2016-03-19 20:50 +0100 |
| Message-ID | <rev2N-4l1-1@gated-at.bofh.it> |
| In reply to | #4180 |
2016-03-19, 19:26 (+0100); Narcis Garcia escriu: > Fet d'aquestes maneres no es queixa, però només passa el primer > paràmetre i no els següents: > > su root -- -c "$@" > su -- -c "$@" > > És a dir, que si executo: > ./llansador.sh nano --boldtext "Un document.txt" > Només té efecte el "nano"; la resta és ignorat. Tens raó, el -c només agafa el primer argument. Em sembla que has de combinar tots els arguments en un de sol, es pot fer amb el getopt args="$(getopt -s sh -o "" -- -- "$@" | cut -c 5-)" su -- -c "$args"
[toc] | [prev] | [next] | [standalone]
| From | Narcis Garcia <debianlists@actiu.net> |
|---|---|
| Date | 2016-03-20 12:20 +0100 |
| Message-ID | <reJyN-65Q-3@gated-at.bofh.it> |
| In reply to | #4182 |
El getopt sembla la millor solució; no veig aleshores la utilitat del doble guió -- pel su. __________ I'm using this express-made address because personal addresses aren't masked enough at lists.debian.org archives. El 19/03/16 a les 20:31, Ernest Adrogué ha escrit: > 2016-03-19, 19:26 (+0100); Narcis Garcia escriu: >> Fet d'aquestes maneres no es queixa, però només passa el primer >> paràmetre i no els següents: >> >> su root -- -c "$@" >> su -- -c "$@" >> >> És a dir, que si executo: >> ./llansador.sh nano --boldtext "Un document.txt" >> Només té efecte el "nano"; la resta és ignorat. > > Tens raó, el -c només agafa el primer argument. Em sembla que has de > combinar tots els arguments en un de sol, es pot fer amb el getopt > > args="$(getopt -s sh -o "" -- -- "$@" | cut -c 5-)" > su -- -c "$args" >
[toc] | [prev] | [next] | [standalone]
| From | Ernest Adrogué <nfdisco@gmail.com> |
|---|---|
| Date | 2016-03-20 13:30 +0100 |
| Message-ID | <reKEy-6Rq-13@gated-at.bofh.it> |
| In reply to | #4188 |
2016-03-20, 12:17 (+0100); Narcis Garcia escriu: > El getopt sembla la millor solució; no veig aleshores la utilitat del > doble guió -- pel su. su -- -c "$args" i su -c "$args" fan coses diferents. Tots dos executen /bin/bash (o el que l'usuari tingui configurat com a shell per defecte) com a root i passen els arguments -c "$args" a /bin/bash. La diferència és que en el primer cas s'executa de forma interactiva (amb l'entrada connectada al terminal) i en el segon no, per tant si el programa és interactiu no funcionarà correctament en la versió sense el doble guió. També hi ha el problema que els arguments s'han de citar amb les cometes adequades, però la sintaxi exacta depèn de cada shell. Per exemple, si l'usuari té configurat tcsh en lloc de bash o sh li hauries de dir al getopt que utilitzi les cometes adequades per a tcsh.
[toc] | [prev] | [next] | [standalone]
| From | Narcis Garcia <debianlists@actiu.net> |
|---|---|
| Date | 2016-03-20 15:30 +0100 |
| Message-ID | <reMwG-86p-13@gated-at.bofh.it> |
| In reply to | #4191 |
Moltes gràcies Ernest, Eloi i Alex per les respostes, que m'han ajudat a trobar la solució. Faig moltes coses amb Shell Scripts, sobretot perquè són directament executables i portables a un munt de sistemes operatius (fins i tot Android que ni tan sols és GNU). Els principals inconvenients que trobo del llenguatge són que no s'executa amb la velocitat d'un compilat i la manca de components d'escriptori (GUI). Aquest tema del «su» el necessitava per millorar els programes «peinddd» i «amoreos». __________ I'm using this express-made address because personal addresses aren't masked enough at lists.debian.org archives. El 20/03/16 a les 13:08, Ernest Adrogué ha escrit: > 2016-03-20, 12:17 (+0100); Narcis Garcia escriu: >> El getopt sembla la millor solució; no veig aleshores la utilitat del >> doble guió -- pel su. > > su -- -c "$args" i > su -c "$args" > > fan coses diferents. Tots dos executen /bin/bash (o el que l'usuari tingui > configurat com a shell per defecte) com a root i passen els arguments -c > "$args" a /bin/bash. La diferència és que en el primer cas s'executa de > forma interactiva (amb l'entrada connectada al terminal) i en el segon no, > per tant si el programa és interactiu no funcionarà correctament en la > versió sense el doble guió. > > També hi ha el problema que els arguments s'han de citar amb les cometes > adequades, però la sintaxi exacta depèn de cada shell. Per exemple, si > l'usuari té configurat tcsh en lloc de bash o sh li hauries de dir al getopt > que utilitzi les cometes adequades per a tcsh. >
[toc] | [prev] | [next] | [standalone]
| From | Eloi <entfe001@gmail.com> |
|---|---|
| Date | 2016-03-20 10:30 +0100 |
| Message-ID | <reHQm-4Oc-3@gated-at.bofh.it> |
| In reply to | #4177 |
El 19/03/16 a les 16:10, Narcis Garcia ha escrit: > A veure si algú domina el programa «su» (substitute user) per executar > una comanda d'una manera que jo no me'n surto: > > Per posar un exemple, com a usuari «root» vull editar un fitxer > especificat per l'usuari i amb algun paràmetre més per l'editor nano. > Però tot això fer-ho a través d'un programet que crida su. > Aquestes són les sintaxis amb les quals ho he intentat sense èxit > (script "llansador.sh"): > > #!/bin/sh > su root -c "$@" > su root -- "$@" > su root -c -- "$@" > > $ ./llansador.sh nano --boldtext "Un document.txt" > > > Algú sap encertar l'ús dels dos guionets igual com fan altres interfícies? > > Nota: necessito NO comptar amb què «sudo» o altres programes menys > essencials estiguin instal·lats. > PARAMS="$@" su -c "$PARAMS" root El problema és que -c espera com a únic paràmetre la concatenació de tots ells, d'aquí la trampa de passar-ho a un altre nom per evitar el comportament de separar-los que per defecte fa "$@"
[toc] | [prev] | [next] | [standalone]
| From | Narcis Garcia <debianlists@actiu.net> |
|---|---|
| Date | 2016-03-20 12:20 +0100 |
| Message-ID | <reJyN-65Q-7@gated-at.bofh.it> |
| In reply to | #4187 |
L'assignació a una variable no resol els paràmetres amb espais. Em sembla que amb el getopt es pot fer el millor pedaç possible. __________ I'm using this express-made address because personal addresses aren't masked enough at lists.debian.org archives. El 20/03/16 a les 10:28, Eloi ha escrit: > El 19/03/16 a les 16:10, Narcis Garcia ha escrit: >> A veure si algú domina el programa «su» (substitute user) per executar >> una comanda d'una manera que jo no me'n surto: >> >> Per posar un exemple, com a usuari «root» vull editar un fitxer >> especificat per l'usuari i amb algun paràmetre més per l'editor nano. >> Però tot això fer-ho a través d'un programet que crida su. >> Aquestes són les sintaxis amb les quals ho he intentat sense èxit >> (script "llansador.sh"): >> >> #!/bin/sh >> su root -c "$@" >> su root -- "$@" >> su root -c -- "$@" >> >> $ ./llansador.sh nano --boldtext "Un document.txt" >> >> >> Algú sap encertar l'ús dels dos guionets igual com fan altres interfícies? >> >> Nota: necessito NO comptar amb què «sudo» o altres programes menys >> essencials estiguin instal·lats. >> > > PARAMS="$@" > su -c "$PARAMS" root > > El problema és que -c espera com a únic paràmetre la concatenació de > tots ells, d'aquí la trampa de passar-ho a un altre nom per evitar el > comportament de separar-los que per defecte fa "$@" >
[toc] | [prev] | [next] | [standalone]
| From | Alex Muntada <alexm@caliu.cat> |
|---|---|
| Date | 2016-03-20 14:30 +0100 |
| Message-ID | <reLAB-7tR-5@gated-at.bofh.it> |
| In reply to | #4177 |
Narcis Garcia: > su root -c "$@" La clau és que "$@" respecta les cometes originals i això no casa amb l'opció -c del su. Si utilitzes -c "$*" no tindràs aquest problema però en pots tenir d'altres en cas que vulguis tenir algun paràmetre amb espais. Cadenes amb espais, cometes, etc. són un malson quan et poses a fer programació en shell scripts. En aquests casos, normalment jo em decanto per utilitzar algun llenguatge de programació més flexible enlloc de fer un shell script. Habitualment tots els sistemes moderns tenen versions mínimes de perl i python instal·lats de sèrie, qualsevol dels dos serveix. També hi ha l'opció de fer-ho en C, és clar. Salut, Alex
[toc] | [prev] | [standalone]
Back to top | Article view | linux.debian.user.catalan
csiph-web