#1 Le 19/10/2024, à 19:51
- xunil2003
Script bash avec la commande echo en root pour ecrire dans un fichier
Bonjour,
J'ai besoin de réaliser un script bash qui cré et rempli le fichier sur plusieur ligne.
le fichier doit contenir
#! /bin/bash
# scantoimage custom pour scantofile
#
mkdir -p ~/brscan
sleep 0.2
if [ -e ~/.brscan-skey/scantofile.config ];then
source ~/.brscan-skey/scantofile.config
elif [ -e /etc//opt/brother/scanner/brscan-skey/scantofile.config ];then
source /etc//opt/brother/scanner/brscan-skey/scantofile.config
fi
SCANIMAGE="/opt/brother/scanner/brscan-skey/skey-scanimage"
OUTPUT=~/brscan/Scan_"$(date +%Y-%m-%d-%H-%M-%S)".tif
OPT_OTHER=""
if [ "$resolution" != '' ];then
OPT_RESO="--resolution $resolution"
else
OPT_RESO="--resolution 100"
fi
if [ "$source" != '' ];then
OPT_SRC="--source $source"
else
OPT_SRC="--source FB"
fi
if [ "$size" != '' ];then
OPT_SIZE="--size $size"
else
OPT_SIZE="--size A4"
fi
if [ "$duplex" = 'ON' ];then
OPT_DUP="--duplex"
OPT_SRC="--source ADF_C"
else
OPT_DUP=""
fi
OPT_FILE="--outputfile $OUTPUT"
OPT_DEV="--device-name $1"
OPT="$OPT_DEV $OPT_RESO $OPT_SRC $OPT_SIZE $OPT_DUP $OPT_OTHER $OPT_FILE"
if [ "$(echo "$1" | grep net)" != '' ];then
sleep 1
fi
#echo "$SCANIMAGE $OPT"
$SCANIMAGE $OPT
if [ ! -e "$OUTPUT" ];then
sleep 1
$SCANIMAGE $OPT
fi
sleep 1
if [ "$(which tiff2pdf 2>/dev/null)" != '' ];then
APL=tiff2pdf
elif [ "$(which mogrify 2>/dev/null)" != '' ];then
#nécessite /etc/ImageMagick-6/policy.xml ligne coder domain read|write
#ou dans les versions plus récentes, mettre en commentaire la ligne qui
#empêche le traîtement des PDF : <!-- policy domain="coder" ... pattern="PDF" /> -->
APL=mogrify
elif [ "$(which gimp 2>/dev/null)" != '' ];then
APL=gimp
#elif [ "$(which okular 2>/dev/null)" != '' ];then
# APL=okular
#elif [ "$(which xreader 2>/dev/null)" != '' ];then
# APL=xreader
#elif [ "$(which libreoffice 2>/dev/null)" != '' ];then
# APL=libreoffice
#elif [ "$(which atril 2>/dev/null)" != '' ];then
# APL=atril
#elif [ "$(which eom 2>/dev/null)" != '' ];then
# APL=eom
else
APL=evince
fi
if [ "$APL" = 'tiff2pdf' ];then
$APL -j -s "Scan Brother converti" -o ${OUTPUT%.*}.pdf "$OUTPUT" 2>/dev/null; rm -f "$OUTPUT"
elif [ "$APL" = 'mogrify' ];then
$APL -format pdf -compress jpeg "$OUTPUT" 2>/dev/null; rm -f "$OUTPUT"
elif [ "$APL" = 'gimp' ] || [ "APL" = 'evince' ];then
echo "$APL $OUTPUT 2>/dev/null" \;sleep 2\;rm -f "$OUTPUT" | bash &
fi
Commnt utiliser dans un script bash la commande echo en root pour ecrire dans un fichier avecl e chemin : /opt/brother/scanner/brscan-skey/script/scantofile.sh
J'ai essayer avec ceci
sudo bash -c "echo \"
#! /bin/bash
# scantoimage custom pour scantofile
#
mkdir -p ~/brscan
sleep 0.2
if [ -e ~/.brscan-skey/scantofile.config ];then
source ~/.brscan-skey/scantofile.config
elif [ -e /etc//opt/brother/scanner/brscan-skey/scantofile.config ];then
source /etc//opt/brother/scanner/brscan-skey/scantofile.config
fi
SCANIMAGE="/opt/brother/scanner/brscan-skey/skey-scanimage"
OUTPUT=~/brscan/Scan_"$(date +%Y-%m-%d-%H-%M-%S)".tif
OPT_OTHER=""
if [ "$resolution" != '' ];then
OPT_RESO="--resolution $resolution"
else
OPT_RESO="--resolution 100"
fi
if [ "$source" != '' ];then
OPT_SRC="--source $source"
else
OPT_SRC="--source FB"
fi
if [ "$size" != '' ];then
OPT_SIZE="--size $size"
else
OPT_SIZE="--size A4"
fi
if [ "$duplex" = 'ON' ];then
OPT_DUP="--duplex"
OPT_SRC="--source ADF_C"
else
OPT_DUP=""
fi
OPT_FILE="--outputfile $OUTPUT"
OPT_DEV="--device-name $1"
OPT="$OPT_DEV $OPT_RESO $OPT_SRC $OPT_SIZE $OPT_DUP $OPT_OTHER $OPT_FILE"
if [ "$(echo "$1" | grep net)" != '' ];then
sleep 1
fi
#echo "$SCANIMAGE $OPT"
$SCANIMAGE $OPT
if [ ! -e "$OUTPUT" ];then
sleep 1
$SCANIMAGE $OPT
fi
sleep 1
if [ "$(which tiff2pdf 2>/dev/null)" != '' ];then
APL=tiff2pdf
elif [ "$(which mogrify 2>/dev/null)" != '' ];then
#nécessite /etc/ImageMagick-6/policy.xml ligne coder domain read|write
#ou dans les versions plus récentes, mettre en commentaire la ligne qui
#empêche le traîtement des PDF : <!-- policy domain="coder" ... pattern="PDF" /> -->
APL=mogrify
elif [ "$(which gimp 2>/dev/null)" != '' ];then
APL=gimp
#elif [ "$(which okular 2>/dev/null)" != '' ];then
# APL=okular
#elif [ "$(which xreader 2>/dev/null)" != '' ];then
# APL=xreader
#elif [ "$(which libreoffice 2>/dev/null)" != '' ];then
# APL=libreoffice
#elif [ "$(which atril 2>/dev/null)" != '' ];then
# APL=atril
#elif [ "$(which eom 2>/dev/null)" != '' ];then
# APL=eom
else
APL=evince
fi
if [ "$APL" = 'tiff2pdf' ];then
$APL -j -s "Scan Brother converti" -o ${OUTPUT%.*}.pdf "$OUTPUT" 2>/dev/null; rm -f "$OUTPUT"
elif [ "$APL" = 'mogrify' ];then
$APL -format pdf -compress jpeg "$OUTPUT" 2>/dev/null; rm -f "$OUTPUT"
elif [ "$APL" = 'gimp' ] || [ "APL" = 'evince' ];then
echo "$APL $OUTPUT 2>/dev/null" \;sleep 2\;rm -f "$OUTPUT" | bash &
fi
\" >> $FICHIER_SCRIPT_SCAN_FILE_BROTHHER-2"
echo
cat -n $FICHIER_SCRIPT_SCAN_FILE_BROTHHER-2
et il me retourne
laurent@vincent-I7-9700K:~/Langages/bash/ubuntu-20.04$ bash $HOME/Langages/bash/ubuntu-20.04/Installer-la-fonction-scan-directe-sur-le-pc-de-brother-pour-les-fichiers-pdf.sh: ligne 273: /dev/null \;sleep 2\;rm -f | bash &
fi
" >> /opt/brother/scanner/brscan-skey/script/scantofile.sh-2: Aucun fichier ou dossier de ce type
laurent@vincent-I7-9700K:~/Langages/bash/ubuntu-20.04$
Merci d'avance pour vos avis et conseils.
- AMD R9 5950x 64 Go Ram / Intel Pentium I7 960 - 12 Go Ram - 6 T0 - Kubuntu 12.04 x64 / Kubuntu 14.04 x64 / Kubuntu 16.04 x64 / Kubuntu 18.04 x64 / Kubuntu 20.04 x64 / Mint
- DreamPlug Multi Boot / Marvel 1.22 Ghz / Architecture ARM / 512 Mo Ram / Carte-sd 16 Go class 10 / 5 Watts / Debian Squeeze 2.6.39.4
- Raspberry PI 1 / Raspberry PI 2 / Raspberry PI 3 / Raspberry PI 4 : 4Gb
JE SUIS CHARLIE
Hors ligne
#2 Le 19/10/2024, à 19:57
- sputnick
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
Avec un here-doc:
cat<<'EOF' >/opt/brother/scanner/brscan-skey/script/scantofile.sh
#! /bin/bash
# scantoimage custom pour scantofile
#
mkdir -p ~/brscan
sleep 0.2
if [ -e ~/.brscan-skey/scantofile.config ];then
source ~/.brscan-skey/scantofile.config
elif [ -e /etc//opt/brother/scanner/brscan-skey/scantofile.config ];then
source /etc//opt/brother/scanner/brscan-skey/scantofile.config
fi
SCANIMAGE="/opt/brother/scanner/brscan-skey/skey-scanimage"
OUTPUT=~/brscan/Scan_"$(date +%Y-%m-%d-%H-%M-%S)".tif
OPT_OTHER=""
if [ "$resolution" != '' ];then
OPT_RESO="--resolution $resolution"
else
OPT_RESO="--resolution 100"
fi
if [ "$source" != '' ];then
OPT_SRC="--source $source"
else
OPT_SRC="--source FB"
fi
if [ "$size" != '' ];then
OPT_SIZE="--size $size"
else
OPT_SIZE="--size A4"
fi
if [ "$duplex" = 'ON' ];then
OPT_DUP="--duplex"
OPT_SRC="--source ADF_C"
else
OPT_DUP=""
fi
OPT_FILE="--outputfile $OUTPUT"
OPT_DEV="--device-name $1"
OPT="$OPT_DEV $OPT_RESO $OPT_SRC $OPT_SIZE $OPT_DUP $OPT_OTHER $OPT_FILE"
if [ "$(echo "$1" | grep net)" != '' ];then
sleep 1
fi
#echo "$SCANIMAGE $OPT"
$SCANIMAGE $OPT
if [ ! -e "$OUTPUT" ];then
sleep 1
$SCANIMAGE $OPT
fi
sleep 1
if [ "$(which tiff2pdf 2>/dev/null)" != '' ];then
APL=tiff2pdf
elif [ "$(which mogrify 2>/dev/null)" != '' ];then
#nécessite /etc/ImageMagick-6/policy.xml ligne coder domain read|write
#ou dans les versions plus récentes, mettre en commentaire la ligne qui
#empêche le traîtement des PDF : <!-- policy domain="coder" ... pattern="PDF" /> -->
APL=mogrify
elif [ "$(which gimp 2>/dev/null)" != '' ];then
APL=gimp
#elif [ "$(which okular 2>/dev/null)" != '' ];then
# APL=okular
#elif [ "$(which xreader 2>/dev/null)" != '' ];then
# APL=xreader
#elif [ "$(which libreoffice 2>/dev/null)" != '' ];then
# APL=libreoffice
#elif [ "$(which atril 2>/dev/null)" != '' ];then
# APL=atril
#elif [ "$(which eom 2>/dev/null)" != '' ];then
# APL=eom
else
APL=evince
fi
if [ "$APL" = 'tiff2pdf' ];then
$APL -j -s "Scan Brother converti" -o ${OUTPUT%.*}.pdf "$OUTPUT" 2>/dev/null; rm -f "$OUTPUT"
elif [ "$APL" = 'mogrify' ];then
$APL -format pdf -compress jpeg "$OUTPUT" 2>/dev/null; rm -f "$OUTPUT"
elif [ "$APL" = 'gimp' ] || [ "APL" = 'evince' ];then
echo "$APL $OUTPUT 2>/dev/null" \;sleep 2\;rm -f "$OUTPUT" | bash &
fi
EOF
'EOF' avec les guillemets, c'est pour ne pas évaluer les variables. Sans les guillemets, ça va évaluer les variables et afficher leur contenus
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#3 Le 19/10/2024, à 20:26
- Watael
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
if [[ $1 =~ net ]]; then
et
if which tiff2pdf 2>/dev/null; then
which étant un programme externe, on le remplacera avec profit par type -p, qui est une commande interne.
à part ça,
le seul echo que je vois pipe des commandes à bash.
je ne vois pas de root
et je ne comprends pas l'intérêt de la chose.
Dernière modification par Watael (Le 19/10/2024, à 20:27)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#4 Le 19/10/2024, à 21:12
- xunil2003
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
Bonsoir,
ça ne fonctionne pas le texte reste noir il n'est plus colorié avec les couleurs du code bash avec kate
cat<<'EOF' >/opt/brother/scanner/brscan-skey/script/scantofile-2.sh
sudo sh -c 'echo "
#! /bin/bash
# scantoimage custom pour scantofile
#
mkdir -p ~/brscan
sleep 0.2
if [ -e ~/.brscan-skey/scantofile.config ];then
source ~/.brscan-skey/scantofile.config
elif [ -e /etc//opt/brother/scanner/brscan-skey/scantofile.config ];then
source /etc//opt/brother/scanner/brscan-skey/scantofile.config
fi
SCANIMAGE="/opt/brother/scanner/brscan-skey/skey-scanimage"
OUTPUT=~/brscan/Scan_"$(date +%Y-%m-%d-%H-%M-%S)".tif
OPT_OTHER=""
if [ "$resolution" != '' ];then
OPT_RESO="--resolution $resolution"
else
OPT_RESO="--resolution 100"
fi
if [ "$source" != '' ];then
OPT_SRC="--source $source"
else
OPT_SRC="--source FB"
fi
if [ "$size" != '' ];then
OPT_SIZE="--size $size"
else
OPT_SIZE="--size A4"
fi
if [ "$duplex" = 'ON' ];then
OPT_DUP="--duplex"
OPT_SRC="--source ADF_C"
else
OPT_DUP=""
fi
OPT_FILE="--outputfile $OUTPUT"
OPT_DEV="--device-name $1"
OPT="$OPT_DEV $OPT_RESO $OPT_SRC $OPT_SIZE $OPT_DUP $OPT_OTHER $OPT_FILE"
if [ "$(echo "$1" | grep net)" != '' ];then
sleep 1
fi
#echo "$SCANIMAGE $OPT"
$SCANIMAGE $OPT
if [ ! -e "$OUTPUT" ];then
sleep 1
$SCANIMAGE $OPT
fi
sleep 1
if [ "$(which tiff2pdf 2>/dev/null)" != '' ];then
APL=tiff2pdf
elif [ "$(which mogrify 2>/dev/null)" != '' ];then
#nécessite /etc/ImageMagick-6/policy.xml ligne coder domain read|write
#ou dans les versions plus récentes, mettre en commentaire la ligne qui
#empêche le traîtement des PDF : <!-- policy domain="coder" ... pattern="PDF" /> -->
APL=mogrify
elif [ "$(which gimp 2>/dev/null)" != '' ];then
APL=gimp
#elif [ "$(which okular 2>/dev/null)" != '' ];then
# APL=okular
#elif [ "$(which xreader 2>/dev/null)" != '' ];then
# APL=xreader
#elif [ "$(which libreoffice 2>/dev/null)" != '' ];then
# APL=libreoffice
#elif [ "$(which atril 2>/dev/null)" != '' ];then
# APL=atril
#elif [ "$(which eom 2>/dev/null)" != '' ];then
# APL=eom
else
APL=evince
fi
if [ "$APL" = 'tiff2pdf' ];then
$APL -j -s "Scan Brother converti" -o ${OUTPUT%.*}.pdf "$OUTPUT" 2>/dev/null; rm -f "$OUTPUT"
elif [ "$APL" = 'mogrify' ];then
$APL -format pdf -compress jpeg "$OUTPUT" 2>/dev/null; rm -f "$OUTPUT"
elif [ "$APL" = 'gimp' ] || [ "APL" = 'evince' ];then
echo "$APL $OUTPUT 2>/dev/null" \;sleep 2\;rm -f "$OUTPUT" | bash &
fi
EOF
il me retourne
laurent@vincent-I7-9700K:~/Langages/bash/ubuntu-20.04$ bash $HOME/Langages/bash/ubuntu-20.04/Installer-la-fonction-scan-directe-sur-le-pc-de-brother-pour-les-fichiers-pdf.sh
/home/laurent/Langages/bash/ubuntu-20.04/Installer-la-fonction-scan-directe-sur-le-pc-de-brother.sh: ligne 426: avertissement : « here-document » à la ligne 274 délimité par la fin du fichier (au lieu de « EOF »)
/home/laurent/Langages/bash/ubuntu-20.04/Installer-la-fonction-scan-directe-sur-le-pc-de-brother.sh: ligne 427: erreur de syntaxe : fin de fichier prématurée
laurent@vincent-I7-9700K:~/Langages/bash/ubuntu-20.04$
- AMD R9 5950x 64 Go Ram / Intel Pentium I7 960 - 12 Go Ram - 6 T0 - Kubuntu 12.04 x64 / Kubuntu 14.04 x64 / Kubuntu 16.04 x64 / Kubuntu 18.04 x64 / Kubuntu 20.04 x64 / Mint
- DreamPlug Multi Boot / Marvel 1.22 Ghz / Architecture ARM / 512 Mo Ram / Carte-sd 16 Go class 10 / 5 Watts / Debian Squeeze 2.6.39.4
- Raspberry PI 1 / Raspberry PI 2 / Raspberry PI 3 / Raspberry PI 4 : 4Gb
JE SUIS CHARLIE
Hors ligne
#5 Le 19/10/2024, à 21:16
- Watael
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
le délimiteur de fin (ici EOF) doit ne pas être ailleurs qu'au début de la ligne.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 19/10/2024, à 21:30
- xunil2003
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
Bonsoir,
Il y a un truc que je ne pige pas
le délimiteur de fin (ici EOF) doit ne pas être ailleurs qu'au début de la ligne.
Mais pourtant il est en début de ligne (voir poste #4)
Merci.
- AMD R9 5950x 64 Go Ram / Intel Pentium I7 960 - 12 Go Ram - 6 T0 - Kubuntu 12.04 x64 / Kubuntu 14.04 x64 / Kubuntu 16.04 x64 / Kubuntu 18.04 x64 / Kubuntu 20.04 x64 / Mint
- DreamPlug Multi Boot / Marvel 1.22 Ghz / Architecture ARM / 512 Mo Ram / Carte-sd 16 Go class 10 / 5 Watts / Debian Squeeze 2.6.39.4
- Raspberry PI 1 / Raspberry PI 2 / Raspberry PI 3 / Raspberry PI 4 : 4Gb
JE SUIS CHARLIE
Hors ligne
#7 Le 19/10/2024, à 22:06
- Watael
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
il n'y est pas, non.
elif [ "$APL" = 'gimp' ] || [ "APL" = 'evince' ];then
echo "$APL $OUTPUT 2>/dev/null" \;sleep 2\;rm -f "$OUTPUT" | bash &
fi
EOF
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#8 Le 19/10/2024, à 23:03
- xunil2003
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
Bonsoir,
Je ne comprend pas ce que vous voulez dire ?
Dans ce cas là ou faut il le placer le EOF , vous me dites "il n'y est pas, non."
exemple :
sudo cat <<EOF >/etc/somedir/foo.conf
# my config file
foo=bar
EOF
EOF est au même emplacement dans mon poste #04 en début et fin du code a insérer dans le fichier ?????
Dans mon fichier a partir de cette ligne tous le restant du code et noir avec Kate il n'est plus en couleur.
cat <<'EOF' > /opt/brother/scanner/brscan-skey/script/scantofile-2.sh
Merci.
Dernière modification par xunil2003 (Le 19/10/2024, à 23:13)
- AMD R9 5950x 64 Go Ram / Intel Pentium I7 960 - 12 Go Ram - 6 T0 - Kubuntu 12.04 x64 / Kubuntu 14.04 x64 / Kubuntu 16.04 x64 / Kubuntu 18.04 x64 / Kubuntu 20.04 x64 / Mint
- DreamPlug Multi Boot / Marvel 1.22 Ghz / Architecture ARM / 512 Mo Ram / Carte-sd 16 Go class 10 / 5 Watts / Debian Squeeze 2.6.39.4
- Raspberry PI 1 / Raspberry PI 2 / Raspberry PI 3 / Raspberry PI 4 : 4Gb
JE SUIS CHARLIE
Hors ligne
#9 Le 19/10/2024, à 23:41
- xunil2003
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
Bonsoir
j'ai trouver il faut mettre
cat <<<'EOF' > /opt/brother/scanner/brscan-skey/script/scantofile-2.sh
au lieu de
cat<<'EOF' >/opt/brother/scanner/brscan-skey/script/scantofile-2.sh
et il me retourne un problème de permission d'écriture dans le fichier
/home/laurent/Langages/bash/ubuntu-20.04/Installer-la-fonction-scan-directe-sur-le-pc-de-brother.sh: ligne 300: /opt/brother/scanner/brscan-skey/script/scantofile-2.sh: Permission non accordée
/home/laurent/Langages/bash/ubuntu-20.04/Installer-la-fonction-scan-directe-sur-le-pc-de-brother.sh: ligne 392: EOF : commande introuvable
idem avec
sudo cat <<<'EOF' > /opt/brother/scanner/brscan-skey/script/scantofile-2.sh
Merci.
- AMD R9 5950x 64 Go Ram / Intel Pentium I7 960 - 12 Go Ram - 6 T0 - Kubuntu 12.04 x64 / Kubuntu 14.04 x64 / Kubuntu 16.04 x64 / Kubuntu 18.04 x64 / Kubuntu 20.04 x64 / Mint
- DreamPlug Multi Boot / Marvel 1.22 Ghz / Architecture ARM / 512 Mo Ram / Carte-sd 16 Go class 10 / 5 Watts / Debian Squeeze 2.6.39.4
- Raspberry PI 1 / Raspberry PI 2 / Raspberry PI 3 / Raspberry PI 4 : 4Gb
JE SUIS CHARLIE
Hors ligne
#10 Le 19/10/2024, à 23:50
- Watael
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
non, c'est bien <<, qui est un here-doc
alors que <<< est un here-string.
regarde la différence entre les termes en italique dans le man.
fais un test simple :
cat <<eof >/tmp/hereDoc.out
foo
bar
baz
eof
cat /tmp/hereDoc.out
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#11 Le 20/10/2024, à 00:34
- xunil2003
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
Bonsoir
j'ai fait un test dans nouveau fichier
cat <<eof >/tmp/hereDoc.out
foo
bar
baz
x
eof
La c'est ok ça marche
Maintenant je fait le même test en changent la chemin
sudo cat <<eof >/opt/brother/scanner/brscan-skey/script/scantofile-2.sh
foo
bar
baz
x
eof
Il me retourne
test-script-bash.sh: ligne 5: /opt/brother/scanner/brscan-skey/script/scantofile-2.sh: Permission non accordée
et pourtant j'ai bien indiqué sudo en debut
sudo cat <<eof >/opt/brother/scanner/brscan-skey/script/scantofile-2.sh
Dossier /opt/brother/scanner/brscan-skey/script/
laurent@vincent-I7-9700K:~$ ls -alh /opt/brother/scanner/brscan-skey/script/
total 36K
drwxr-xr-x 2 root root 4,0K oct. 19 23:38 .
drwxr-xr-x 3 root root 4,0K janv. 17 2023 ..
-rwxr-xr-x 1 root root 5,0K oct. 22 2020 scantoemail.sh
-rw-r--r-- 1 root root 2,5K oct. 19 23:42 scantofile-2.sh
-rwxr-xr-x 1 root root 1,2K oct. 22 2020 scantofile.sh
-rwxr-xr-x 1 root root 1,6K oct. 19 15:40 scantoimage.sh
-rwxr-xr-x 1 root root 1,6K oct. 19 15:13 scantoimage.sh.bak
-rwxr-xr-x 1 root root 1,3K oct. 22 2020 scantoocr.sh
laurent@vincent-I7-9700K:~$
Merci.
Dernière modification par xunil2003 (Le 20/10/2024, à 00:37)
- AMD R9 5950x 64 Go Ram / Intel Pentium I7 960 - 12 Go Ram - 6 T0 - Kubuntu 12.04 x64 / Kubuntu 14.04 x64 / Kubuntu 16.04 x64 / Kubuntu 18.04 x64 / Kubuntu 20.04 x64 / Mint
- DreamPlug Multi Boot / Marvel 1.22 Ghz / Architecture ARM / 512 Mo Ram / Carte-sd 16 Go class 10 / 5 Watts / Debian Squeeze 2.6.39.4
- Raspberry PI 1 / Raspberry PI 2 / Raspberry PI 3 / Raspberry PI 4 : 4Gb
JE SUIS CHARLIE
Hors ligne
#12 Le 20/10/2024, à 00:43
- Watael
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
je n'avais pas fait le test sur un répertoire sur lequel je n'ai pas les droits* :
cat <<eof | sudo tee "/opt/$tonFic"
foo
bar
baz
eof
$ cat "/opt/$tonFic"
foo
bar
baz
$
$ sudo cat <<eof >/opt/monTest
foo
bar
baz
eof
bash: /opt/monTest: Permission non accordée
$
ça n'ira pas plus loin : le fichier n'est pas créé.
la redirection (>) est exécutée en premier, et puisque le redirection émane de l'utilisateur... ça coince.
je ne sais pas pourquoi/comment tes fichiers sont créés
--
* c'est pourtant un problème connu
sudo write to file
Dernière modification par Watael (Le 20/10/2024, à 00:52)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#13 Le 20/10/2024, à 01:19
- xunil2003
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
Bonsoir,
Ok ça marche dans le fichier test en root.
J'ai réessayé dans mon fichier, je m'aperçois que je ne peut pas utilisé la tabulation (qui met le texte en noir) alors c'est la caca avec les cases (case $variable in) pour tabuler.
Obliger de mettre le text carrément à gauche de l’écran. je ne le savais pas !
Merci à vous, Bonne soirée.
Dernière modification par xunil2003 (Le 20/10/2024, à 01:27)
- AMD R9 5950x 64 Go Ram / Intel Pentium I7 960 - 12 Go Ram - 6 T0 - Kubuntu 12.04 x64 / Kubuntu 14.04 x64 / Kubuntu 16.04 x64 / Kubuntu 18.04 x64 / Kubuntu 20.04 x64 / Mint
- DreamPlug Multi Boot / Marvel 1.22 Ghz / Architecture ARM / 512 Mo Ram / Carte-sd 16 Go class 10 / 5 Watts / Debian Squeeze 2.6.39.4
- Raspberry PI 1 / Raspberry PI 2 / Raspberry PI 3 / Raspberry PI 4 : 4Gb
JE SUIS CHARLIE
Hors ligne
#14 Le 20/10/2024, à 03:05
- Watael
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
ce n'est pas normal.
montre-nous le script in extenso.
les tabulations, les espaces et les alinéas, ne sont pas un problème quand le dernier MOT délimiteur du here-doc (ici EOF) est au tout début de la ligne.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#15 Le 21/10/2024, à 18:18
- Tawal
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
Bonsoir,
ça ne fonctionne pas le texte reste noir il n'est plus colorié avec les couleurs du code bash avec kate
cat<<'EOF' >/opt/brother/scanner/brscan-skey/script/scantofile-2.sh sudo sh -c 'echo " #! /bin/bash # scantoimage custom pour scantofile # …
…
Normal ou pas
Le shebang n'est pas bon, il y a un espace entre #! et /bin/bash
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
En ligne
#16 Le 21/10/2024, à 18:34
- sputnick
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
@xunil2003:
- il faut etre root (sudo -s)
- avant de copier coller, le dernier EOF doit obligatoirement être en début de ligne
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#17 Le 22/10/2024, à 13:41
- Tawal
Re : Script bash avec la commande echo en root pour ecrire dans un fichier
@xunil2003:
- il faut etre root (sudo -s)
- avant de copier coller, le dernier EOF doit obligatoirement être en début de ligne
On peut tout faire depuis un utilisateur ayant des droits sudo.
cat <<EOF | sudo tee /opt/script.sh
# Code ici
# Avec indentation etc ...
# Et le dernier EOF en tout début de ligne
EOF
Il y aura une demande de mot de passe utilisateur une fois le EOF saisi et entré.
Edit:
Il est possible (pas trop mon goût) d'écrire ça dans un script à une condition : le script doit être lancé dans un terminal.
La demande de mot de passe se fera à la rencontre de sudo.
Sinon, il existe pkexec qui "déporte" la demande de mot de passe en graphique. C'est pas tout à fait la même chose que sudo.
Mais en règle générale, si on a besoin de sudo alors le script devrait être lancé par root.
Dernière modification par Tawal (Le 29/10/2024, à 02:47)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
En ligne