Sziasztok !
Szeretnék egy kis segítséget kérni. Bash script-be szeretnék létrehozni mappákat.
export SL=/scorpio-linux
mkdir -pv ${SL}
mkdir -pv ${SL}/{bin,boot{,grub},dev,{etc/,}opt,home,lib/{firmware,modules},lib64,mnt}
mkdir -pv ${SL}/{proc,media/{floppy,cdrom},sbin,srv,sys}
mkdir -pv ${SL}/var/{lock,log,mail,run,spool}
mkdir -pv ${SL}/var/{opt,cache,lib/{misc,locate},local}
install -dv -m 0750 ${SL}/root
install -dv -m 1777 ${SL}{/var,}/tmp
install -dv ${SL}/etc/init.d
mkdir -pv ${SL}/usr/{,local/}{bin,include,lib{,64},sbin,src}
mkdir -pv ${SL}/usr/{,local/}share/{doc,info,locale,man}
mkdir -pv ${SL}/usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv ${SL}/usr/{,local/}share/man/man{1,2,3,4,5,6,7,8}
A problémám az, hogy össze vissza hozzá létre a mappákat. A "{}" jeleket is hozzáadja a mappákhoz és van amit egymásik mappához ad hozzá amit létre se kéne hoznia. puskázásként használtam a lfs könyvet és a cross könyvet is. Ha így futtatom le ahogy most van akkor ezt kapom.
Eredetileg ennek a mappának egyszer kéne létrejönnie.
root@HackerOS:/# ls | grep scorpio-linux
scorpio-linux
scorpio-linux{
root@HackerOS:/#
A benne lévő mappák így jönnek létre.
root@HackerOS:/scorpio-linux# ls
{bin,boot{,grub},dev,{etc cross-tools etc {proc,media root usr var
root@HackerOS:/scorpio-linux#
Tudna valaki segíteni?
Válaszokat előre is köszönöm.
- 1341 megtekintés
Hozzászólások
Biztosan bash alatt adod ki a parancsokat?
- A hozzászóláshoz be kell jelentkezni
#!/bin/bash -e
Így keztem.
root@HackerOS:/home/pusztito/Scorpio-Linux# bash --version
GNU bash, 5.0.3(1)-release (x86_64-pc-linux-gnu) verzió
Copyright (C) 2019 Free Software Foundation, Inc.
A licenc GPLv3+: a GNU GPL 3. vagy újabb változata
Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja.
NINCS GARANCIA, a törvény által engedélyezett mértékig.
root@HackerOS:/home/pusztito/Scorpio-Linux#
- A hozzászóláshoz be kell jelentkezni
'set +B' nincs esetleg a script elejen vagy default-ban beallitva?
Avagy ha megadod script elejen 'set -B' -t (ami default lenne egyebkent)?
- A hozzászóláshoz be kell jelentkezni
Nincs semmi ilyesmi megadva neki.
Ha megadom a 'set -B' -t akkor ezta hibát írja.
Scorpio-setup.sh: 19: set: Illegal option -B
Eredetileg, a 'set +h' -t akartam hozzáadni de ugyan ezt a hibát adja rá.
- A hozzászóláshoz be kell jelentkezni
set -B lenne amit szeretnel:
-B the shell will perform brace expansion
viszont ha mas se igazan megy akkor vagy egyaltalan nem mennek a set parameterek vagy ezek nem.
set --help mit mond?
most latom 5-os bash-t hasznalsz ami relative nem tul regota van kinn, nem remlik hogy azzal lett volna mar dolgom, de ketlem hogy kikerult volna belole a set vagy annak ilyen szintu parameterei.
Esetleg valami kezzel forditott valtozat lenne, nem lehet hogy nem sikerult rendesen felrakni?
- A hozzászóláshoz be kell jelentkezni
set --help kimenet:
root@HackerOS:/home/pusztito/Scorpio-Linux# set --help
set: set [--abefhkmnptuvxBCHP] [-o beállításnév] [--] [arg ...]
Parancsértelmező-beállítások és pozicionális paraméterek állítása, törlése.
Parancsértelmező-attribútumok és pozicionális paraméterek értékeinek
módosítása, parancsértelmező-változók neveinek és értékeinek kiírása.
Kapcsolók:
-a A módosított vagy létrehozott változó exportálásra jelölése
-b Munka befejezéséről azonnali értesítés
-e Azonnali kilépés, ha egy parancs nem nullával lép ki
-f Fájlnév-generálás (globbing) tiltása
-h Parancsok helyének megjegyzése használatkor
-k Minden értékadó argumentum a parancs környezetébe kerül, nem
csak a parancsot megelőzők
-m Munkakezelés engedélyezése
-n Parancsok beolvasása végrehajtás nélkül
-o kapcsolónév
Kapcsolónév szerinti változóállítás:
allexport mint -a
braceexpand mint -B
emacs emacs-szerű sorszerkesztés
errexit mint -e
errtrace mint -E
functrace mint -T
hashall mint -h
histexpand mint -H
history előzmények tárolásának engedélyezése
ignoreeof EOF esetén nem lép ki a parancsértelmező
interactive-comments
interaktív parancsokban is lehetnek megjegyzések
keyword mint -k
monitor mint -m
noclobber mint -C
noexec mint -n
noglob mint -f
nolog jelenleg elfogadott, de mellőzött
notify mint -b
nounset mint -u
onecmd mint -t
physical mint -P
pipefail egy csővezeték-parancs kilépési kódja az utolsó
nem nullával kilépett parancs kilépési kódja,
vagy 0, ha nem volt ilyen
posix a bash viselkedésének megváltoztatása, ha az
alapértelmezett nem felel meg a Posix
szabványnak
privileged mint -p
verbose mint -v
vi vi-szerű sorszerkesztés
xtrace mint -x
-p Mindig be van kapcsolva, ha a valós és effektív felhasználó nem
egyezik. Letiltja az $ENV fájl értelmezését és a parancsértelmező-
függvények betöltését. A kapcsoló kikapcsolása az effektív
uid és gid valósra állítását okozza
-t Egyetlen parancs beolvasása és végrehajtás után kilépés
-u Nem létező változók behelyettesítése legyen hiba
-v Beolvasott parancsok kiírása olvasáskor (értelmezés előtt).
-x Parancsok kiírása végrehajtáskor (értelmezés után).
-B Szögleteszárójel-kiegészítés végrehajtása
-C Létező normál fájlok felülírásának tiltása kimenetátirányításnál
-E Az ERR csapdát öröklik a függvények
-H Felkiáltójeles előzményhelyettesítés engedélyezése. Interaktív
parancsértelmezőnél alapértelmezés
-P Parancsok végrehajtásánál szimbolikus linkek követésének tiltása
(például cd esetében)
-T A DEBUG és RETURN csapdát öröklik a függvények
-- A további argumentumok hozzárendelése a pozicionális paraméterekhez.
Ha nincsenek további argumentumok, akkora a pozicionális paraméterek
törlésre kerülnek.
- A további argumentumok pozicionális paraméterekhez rendelése
A -x és -v kapcsolók ki vannak kapcsolva.
„-” helyett „+” használatával a kapcsolók tilthatóak. A kapcsolók a
parancsértelmező indításakor is állíthatóak. Az érvényben lévő kapcsolók
a $- változóban vannak. A záró nem értelmezhető argumentumok pozicionális
paraméterek lesznek (rendre $1, $2 ... $n). Ha nincs ARG, minden
parancsértelmező-változó kiírásra kerül.
Kilépési kód:
Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap.
root@HackerOS:/home/pusztito/Scorpio-Linux#
Nem kézzel lett forgatva. Debian csomag. Már délelőtt óta kínlódok ezzel.
- A hozzászóláshoz be kell jelentkezni
Hat help-ben pedig szerepel a parameter (gondolom ugyanabban a bash shell-ben futtattad help-et is):
'-B Szögleteszárójel-kiegészítés végrehajtása'
megis azt mondod illegal option-t ad ra, szoval valami nem kerek azzal a bash-el.
Esetleg debian 10-nel valtozott volna bash eleresi utja es /bin/bash (amit megadtal script elejen) a default dash-re mutat?
'which bash' es 'echo $SHELL' mit mond?
avagy ha nem a scriptben adod ki 'set -B' -t is illegal parameter-t ad, csak hogy biztos ugyanaz a bash fut a scriptbol amit usered is hasznal?
- A hozzászóláshoz be kell jelentkezni
root@HackerOS:/home/pusztito/Scorpio-Linux# which bash
/bin/bash
root@HackerOS:/home/pusztito/Scorpio-Lin
root@HackerOS:/home/pusztito/Scorpio-Linux# echo $SHELL
/bin/bash
root@HackerOS:/home/pusztito/Scorpio-Linux#
Szerk: 'set --help' nem a bash script-be futtattam. Csak simán a console-ból. Ha belerakom a scriptbe, akkor úgyan úgy megkapom a hibát.
'Scorpio-setup.sh: 19: set: Illegal option --'
- A hozzászóláshoz be kell jelentkezni
echo $BASH_VERSION
- A hozzászóláshoz be kell jelentkezni
root@HackerOS:/home/pusztito/Scorpio-Linux# echo $BASH_VERSION
5.0.3(1)-release
root@HackerOS:/home/pusztito/Scorpio-Linux#
- A hozzászóláshoz be kell jelentkezni
A scriptedben...
- A hozzászóláshoz be kell jelentkezni
scriptbe nincs eredmény. Nem ad ki rá semmit.
- A hozzászóláshoz be kell jelentkezni
Akkor valahogy mégse a bash futtatja.
- A hozzászóláshoz be kell jelentkezni
Naugye :)
Hogyan indítod el a scriptedet?
Ez a script mit ír ki?
#!/bin/bash
ps a | grep $$
- A hozzászóláshoz be kell jelentkezni
root@HackerOS:/home/pusztito/Scorpio-Linux# sh test.sh
6851 pts/0 S+ 0:00 sh test.sh
6853 pts/0 S+ 0:00 grep 6851
root@HackerOS:/home/pusztito/Scorpio-Linux#
- A hozzászóláshoz be kell jelentkezni
https://hup.hu/node/165197?comments_per_page=9999#comment-2371277
Tehát mi a kérdés?
- A hozzászóláshoz be kell jelentkezni
"sh test.sh"
még inkább "naugye". És ./test.sh mit ír ki?
- A hozzászóláshoz be kell jelentkezni
Biztos vagy benne, hogy a scriptet Bash futtatja, és nem egy fapadosabb shell?
- A hozzászóláshoz be kell jelentkezni
És mi a script első sora?
--
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
Szerintem a scriptet nem a bash futtatja, hanem pl. dash. Ami meghívja, az valószínűleg így indítja:
/bin/sh /valahol/ascript.sh
A /bin/sh meg vagy dash vagy valami más, de nem bash.
Próbaképp bele lehet taknyolni olyat, hogy:
if [ "${SHELL}" != "/bin/bash" ]
then
/bin/bash "$0"
fi
- A hozzászóláshoz be kell jelentkezni
Beledobtam a script-be próbaként. Ha kiveszem a 'set -B' akkor lefut a script de úgyan úgy össze vissza hozza létre a csomagokat.
Ha benne hagyom, akkor a hiba változatlan.
- A hozzászóláshoz be kell jelentkezni
Akkor végképp passz. Úgy tudtam előidézni a hibát ahogy leírtam, egyébként nekem működik :)
- A hozzászóláshoz be kell jelentkezni
#!/bin/bash
- A hozzászóláshoz be kell jelentkezni
Megvan a megoldás. Igazatok volt. Úgy néz ki, tényleg nem a bash-t használta.
Ez megoldota a gondot 'ln -sf bash /bin/sh'
Köszönöm a segítségeteket.
- A hozzászóláshoz be kell jelentkezni
Ez rossz megoldás. Egyrészt így minden más scriptet is a Bash fog futtatni, másrészt egy jövőbeli esetleges frissítés során a symlinked felülíródhat, és a scripted hirtelen nem fog tovább műkődni.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Harmadrészt a szkript nem hordozható.
- A hozzászóláshoz be kell jelentkezni
Rendben. Mi lenne akkor a jó megoldás?
- A hozzászóláshoz be kell jelentkezni
Nekem mar kicsit osszezavaro ez a sok kulonbozo post es script-reszlet (illetve eleve, hogy magyarul hasznalod a rendszert..). A user-edhez milyen default shell van beallitva? Valaha momlltal valamit a shell-ekkel? Ha bash-ben vagy, a script elejen explicit beallitod azt interpreternek, mi az, ami miatt megsem az hajtja vegre futtataskor?
- A hozzászóláshoz be kell jelentkezni
Ne 'sh script.sh'-ként indítsd a scriptedet.
- A hozzászóláshoz be kell jelentkezni
s/\./, hanem bash script.sh formában/
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
- A hozzászóláshoz be kell jelentkezni
#!/bin/bash
- A hozzászóláshoz be kell jelentkezni
Én kihagynám a csiribú könyvtárlétrehozást. Ha ragaszkodsz hozzá, akkor amit az elején írtam, ha nem bash futtatja, akkor bash-al újból meghívod (csak nem olyan hülyén ahogy írtam, mondjuk a $SHELL helyett a $BASH_VERSION-t nézni, és ott kihagytam az else ágat, mert birka voltam).
- A hozzászóláshoz be kell jelentkezni
istenem.... mtree(8)
- A hozzászóláshoz be kell jelentkezni
$ mtree
mtree: command not found
- A hozzászóláshoz be kell jelentkezni
Elrontottad az OS-t.
$ mtree
^C # hosszú néma csend után
$
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
- A hozzászóláshoz be kell jelentkezni
A gyengebbek kedveert: https://linux.die.net/man/8/mtree
- A hozzászóláshoz be kell jelentkezni
Igazatok volt. A linkelés tényleg tacsra vágta a rendszert.
A legokosabb módja, ha futtatási jogot adunk hozzá és simán a './script.sh' -val indítjuk .
- A hozzászóláshoz be kell jelentkezni