Új hozzászólás Aktív témák
-
Keem1
veterán
válasz
bambano #2598 üzenetére
Megvan a hiba forrása!
exclist=$(printf -- "--exclude='%s'\n" "${excludes[@]}")
A fentivel nem megy, ha kézzel írom be a tar commandba, akkor megy.
Nem... mégsem az. Ha a scriptből kiechozom a commandot, és kézzel futtatom, akkor működik. Ha a scriptet használom, akkor nem.
Nem megy:
tar -cvf ${path_archive} ${exclist} ${dirlist}Megy:
echo "tar -cvf ${path_archive} ${exclist} ${dirlist}"
majd Ctrl+C, konzolba Ctrl+V -
Keem1
veterán
Hmm... kézzel megy, scriptben nem
juliska@pistacio:~ $ tar --exclude='home/juliska/tmp' -czf /media/hdd/backup/pistacio.tar.gz /home/juliska/*
tar: A kezdő „/” eltávolítása a nevek elejéről
tar: A kezdő „/” eltávolítása a közvetlen linkek céljaiból
juliska@pistacio:~ $ tar -tf /media/hdd/backup/pistacio.tar.gz
home/juliska/samsung_860evo_250gb_01.png
home/juliska/samsung_860evo_250gb_02.png
home/juliska/samsung_860evo_250gb_03.png
juliska@pistacio:~ $És exclude nélkül benne is van a tmp:
juliska@pistacio:~ $ tar -czf /media/hdd/backup/pistacio.tar.gz /home/juliska/*
tar: A kezdő „/” eltávolítása a nevek elejéről
tar: A kezdő „/” eltávolítása a közvetlen linkek céljaiból
juliska@pistacio:~ $ tar -tf /media/hdd/backup/pistacio.tar.gz
home/juliska/samsung_860evo_250gb_01.png
home/juliska/samsung_860evo_250gb_02.png
home/juliska/samsung_860evo_250gb_03.png
home/juliska/tmp/
home/juliska/tmp/teszt.txt
home/juliska/tmp/addon.xml
home/juliska/tmp/131927106_711033053173709_564839630427467469_n_711033049840376.jpg
home/juliska/tmp/20210117_201722.jpg
juliska@pistacio:~ $ -
Keem1
veterán
válasz
bambano #2594 üzenetére
Gyártottam egy juliska usert, abban csináltam egy tmp foldert és beleraktam pár teszt filet.
Kérhetek erre egy tar commandot, aminek a targetje: /media/hdd/backup/pistacio.tar.gz és a /home/juliska foldert tömöríti és a /home/juliska/tmp foldert excludálja? Kipróbálnám.Képtelen vagyok elengedni ezt...
Kiindulási állapot:
juliska@pistacio:~/tmp $ ls -al
összesen 3160
drwxr-xr-x 2 juliska users 4096 márc 11 15:06 .
drwxr-xr-x 3 juliska users 4096 márc 11 15:06 ..
-rwx------ 1 juliska users 102337 jan 1 05:50 131927106_711033053173709_564839630427467469_n_711033049840376.jpg
-rwx------ 1 juliska users 3112977 jan 17 20:17 20210117_201722.jpg
-rwx------ 1 juliska users 827 nov 12 2017 addon.xml
-rwx------ 1 juliska users 10 febr 7 10:41 teszt.txt
juliska@pistacio:~/tmp $ uname -a
Linux pistacio 5.10.17+ #1403 Mon Feb 22 11:26:13 GMT 2021 armv6l GNU/Linux
juliska@pistacio:~/tmp $ tar --version
tar (GNU tar) 1.30
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Írta: John Gilmore és Jay Fenlason.
juliska@pistacio:~/tmp $ -
Keem1
veterán
válasz
bambano #2592 üzenetére
Hmm...
Ez abban az esetben is érvényes, ha a tar file abszolút útvonallal van megadva?Nálam ez van a script elején:
devicename=$(hostname)
path_archive="/media/hdd/backup/${devicename}.tar.gz"Direkt pont az ilyenek miatt igyekeztem mindenütt abszolút path-t használni relatív helyett. Ez se segít a helyzetemen?
-
bambano
titán
gyökérnek nevezhető az is, ahonnan a tar parancsot indítod.
ha azt írod, hogy tar cvf akarmi.tar /home/juliska, akkor a tar valószínűleg le fogja venni a kezdő /-t és a tarfájlba már home/juliska kezdettel kerülnek be a fájlok. ezért ha excludálod a /home/juliska/tmp-t, akkor arra nem illeszkedik a kizárás. szerintem ilyenkor a home/juliska/tmp-t kell excludálni.
-
Keem1
veterán
válasz
bambano #2589 üzenetére
"ugyanabból a gyökérből csinálod meg a fájlneveket, mint ahonnan a tar-t indítod"
Ennek az értelmezésével picit gondban vagyokEddig azt hittem, Linuxon csak egy gyökér van (a "/").
Abszolút útvonalat adtam meg, mindkét tömbben. A tömörítendő folderek tömbjében van pl.: "/home/"
És ehhez kapcsoódik a kivételek tömbjében: "/home/juliska/tmp", hogy ennek a usernek a tmp foldere ne kerüljön bele. Belekerül.Most alapvetően leszűkítettem 1-1-re a tömbök tartalmát, ameddig ez nem megy, a többi elemet hiába teszem bele:
declare -a directories=(
"/home/juliska"
)
declare -a excludes=(
"/home/juliska/tmp/*"
)
dirlist=$(printf "%s\n" "${directories[@]}")
exclist=$(printf -- "--exclude='%s'\n" "${excludes[@]}")
tar ${exclist} -czf ${path_archive} ${dirlist}Ez eddig a commandom, ami mindenféle hibaüzenet nélkül végrehajtódik, el is készül a tar file, de a tmp folder ugyanúgy ott figyel benne.
-
bambano
titán
"fogalmam sincs, mi a problémája.": például lehet az, hogy nem ugyanabból a gyökérből csinálod meg a fájlneveket, mint ahonnan a tar-t indítod.
csináld meg a tar file-t, mindegy, hogy jól vagy rosszul, majd utána listázd ki azokat a fájlokat a tarból, amiknek nem kellene benne lenni. majd nézd meg, hogy az exclude tömbben a fájlok ugyanúgy vannak-e és ugyanaz-e a könytáruk is.
ha nem boldogulsz, inkább rakd be egy temporális fájlba az excludálni valókat és -X -szel szedd ki.
-
Keem1
veterán
válasz
#44001536 #2587 üzenetére
Segít, köszönöm, ez a megoldás
A command így az lesz, amit várnék, de sajnos nem működik. Nincs hibaüzenet, csak egyszerűen nem veszi figyelembe, hogy excludálni kéne. A parancs lefut, végre is hajtja, de mintha az exclude ott se lenne.
Nem jöttem még rá az okára, pedig próbáltam első paraméterként rögtön a tar után, próbáltam a multikapcsolók után és a célfájl után is. Mindegyik esetben végrehajtódik, szépen el is készül a kb. 10 GB-os tgz fájl, amiben benne van többek között az a /home/username/tmp folder is, ami az exclude paraméterben meg van adva.Még keresem az okát, de egyelőre nem jöttem rá. A helyzetet az nehezíti, hogy mivel nincs hibaüzenet, fogalmam sincs, mi a problémája.
-
Keem1
veterán
Helló emberek. Sajnos rossz topikban kezdtem, de ezt a kérdést tettem fel.
Valaki esetleg tudna segíteni?
Köszönöm! -
Headless
őstag
válasz
Fecogame #2581 üzenetére
tömbök meg azért nem a legjobbak shellben mert nem fog minden shellben működni az shell specifikus, de ha esetleg egy beépített eszközön akarod futtatni ahol javarészt busybox és ash van ott nem fog lefutni vagy akár ha bsd alatt. ott is lesznek különbséges persze nem lenne egy elfogadott tömbbrendszer de a legközelebb hozzá azzal vagyunk mint amit bambano írt.
-
bambano
titán
válasz
Fecogame #2579 üzenetére
a kérdés az, hogy így akarod megoldani a problémát vagy rendesen.
ha így, akkor nézd meg, hogy a bash hogy kezel tömböket.
ha rendesen, akkor kb. így néz ki:cat <<EOF
http prohardver
http ezmegaz
EOF | while read website; do curl ${website} | stb. ; done
az, hogy tesztbe teszed a kiértékelést, meg =1 meg hasonló bonyolítások, szintén felejtős. A grep rendesen adja vissza a kilépési kódját, tehát:
curl | grep && echo ok
-
Van egy for ciklusom, ami már létező változókon megy végig. A változók végén változik a szám.
pl. w1, w2, w3
Szeretném használni egy curl parancsban, de sehogy sem tudom feloldani:
w1="https://prohardver.hu"
w1="https://hardverapro.hu"
w3="https://logout.hu"
for i in w{1..3}; do
number=${i: -1}
[ $(curl -sI "$(echo w${number})" | grep -c 'HTTP/2 200') != "1" ] && echo OK
done
A teljes változó website1 lenne, de ha elé írok egy dollárjelet, akkor a website változót üresnek veszi, és a curl csak az "1"-et kapja meg. echo-val sem sikerült megoldanom. Mi a megoldás?
-
Headless
őstag
válasz
bambano #2577 üzenetére
Közben sikerült tovább lépnem.
a fő probléma a \n\r sorvégződés volt windowson kezdtem a fájlt....
azután már részletesebb hibaüzenetet kaptam.volt pár különbözőség, date -d helyett -r , find-ban a -printf hiányzott meghekkeltem -exec -el
de a feltétel sem volt jó a -gt
viszont a feltétel továbbra sem stimmel[: 243857: unexpected operator
olyan mintha hiányozna az egyik fele a feltételnek és emiatt hibát dob.de az meg egy constans
UI: megvan...
sed nem támogatja a \t \n stb jelöléseket ami azért elég szomorúegyenlőre fut rendbe.
-
Headless
őstag
sziasztok, átkéne vinnem egy scriptet bash alól zsh (freenas) alá, és errort kapok valamiért
van egy jó kis anyag, hozzá, mik az általános különbségek
pl ami valószínű gond lehet, pl ez
ls * |while read x;do
...
done
vagy vannak feltételem
if [ number1 -gt number2 ];then
...
else
...
fi
van sima bash integer összeadásom:
$((asd*asd+asd))
output redirection
röviden nagyjából ezek vannak, és egy ilyen szintax erroral száll el, tehát valamelyik if -ben lehet a hiba.
Syntax error: end of file unexpected (expecting "then")
vagy a fájl kódolása lenne a hiba? utf8. -
I02S3F
addikt
Sziasztok!
Azt jól gondolom, hogy a sdterr-t egy többösszetevős szkriptben érdemes vagy fájlba, vagy a képernyőre kiíratni?
(Például amikor látok egy install szkriptet, például az Anaconda-ét [Linux installere], vagy a Doom3 Linux installere, vagy a VBoxGuestAdditionLinux-é, mintha mind printelne a képernyőre hibát, ha van. Az nem ez? Az nem a stderr képernyőre printelése?)
-
sonar
addikt
Sziasztok,
expect topik hiányában postolnák ide egy kérdést
a
get System.*
parancsot szeretném elküldeni, de sehogy se akar összejönni.
A login megy, entereket is elküldi, de még egyinfo
parancsot se fogad.
Persze kézzel lefuttatva minden müxik.
Van vkinek tippje, hogy mi lehet elbaltázva?set ipaddress [lindex $argv 0]
spawn telnet 172.30.108.92
spawn telnet $ipaddress
expect "Enter Login:"
send "admin\r"
expect "Enter Password:"
send "$env(PWD)\r"
expect "pdu#0>"
send "\r"
expect "pdu#0>"
send "info"
#send -- "get System\.*"
send "\r"
-
bambano
titán
válasz
RedHarlow #2568 üzenetére
vagy temp fájl, vagy megoldod, hogy a riportoló szkript semmi mást ne írjon ki, csak ezt az adatot, és azt használod utána valahogy így:
tempfile=$(reportoloszkript.sh)
másik verzió: a tempfájl útvonalát a hívó szkriptben határozod meg, és átadod a riportolónak, és az azt használja.
-
RedHarlow
aktív tag
Sziasztok, van egy riportoló scriptem (lefut benne egy sql, készül egy csv, kimegy e-mailben majd logol). A kimeneti csv útvonala el van mentve a scriptben egy változóban, ezt az változót szeretném használni abban a scriptben ami meghívja magát a riportoló scriptet azonban sehogyse jön össze. Tudnátok segíteni mi lehet a gond? A neten ezt a megoldást találtam de nem működik:
Ezt írtam a riportoló script végére:
export OUTPUT
Ezt pedig a meghívó scriptbe:
echo $OUTPUT
-
-
Siriusb
veterán
válasz
tordaitibi #2562 üzenetére
Nálam Arch Linux + KDE van, teljesen jól működik a fenti megoldás.
No de az a lényeg, hogy meg tudtad oldani. -
Jester01
veterán
válasz
tordaitibi #2562 üzenetére
Ugye van 2 függvény, a wait az simán vár 10 másodpercig, a monitor pedig lekérdezi a monitor állapotát. A főprogram először addig pörög amíg a monitor be van kapcsolva. Megnézi az állapotot, vár 10 másodpercet, megint megnézi és így tovább. Ha egyszer kikapcsoltnak látja a monitort átlép a második részbe ami hasonlóan működik de arra vár, hogy visszakapcsoljon a monitor. Ekkor lefut az általad adott parancs és kezdődik minden előlről.
-
válasz
Siriusb #2561 üzenetére
Ezen már túl vagyok, többször is, Manjaro, Mint és Debian alatt nem működik. Ezért a mostani Ubuntun bele se fogtam mert felesleges, ezért kerestem automatizált más megoldást.
Nem emlékszem már hogy pont ilyenek voltak de a default.pa szerkesztgetésére többször is emlékszek.Ez a pc bele van szerelmesedve a belső Analóg sztereo kimenet-be.
Nem disztrófüggő, néha túlél egy session alatt 8-10 monitor off-on-t is, máskor boot utáni első alvás-visszatérésnél elfelejti a hdmi-t.
Jól látod ez egy beépített hangszórós monitor.Viszont,
Jester01,
tökéletesen jól működik a szkripted.
Annyit csináltam hogy az először próbának az asztalon létrehozott .sh fájlt töröltem, majd miután Te állítottad hogy nálad nem húzza a procit, létrehoztam a /home/sajatnevem/ alatt, innen megy pár általam használt szkript, némelyik autostartos (már ez is az), másokra bill-kombó és panel ikon mutat.
És tökéletes! Szerintem valamit a copy-paste során követhettem el, hogy mit azt már így nem tudom megmondani.Mégegyszer köszönöm.
Ha esetleg valami amatőrnek való szájbarágós leírást adnál, mi és hogyan működik ebbe az egyszerű pár soros szkriptbe, azt is nagyon megköszönném. -
Siriusb
veterán
válasz
tordaitibi #2553 üzenetére
Én más irányból közelíteném meg:
https://wiki.archlinux.org/index.php/PulseAudio/Troubleshooting#No_HDMI_sound_output_after_some_time_with_the_monitor_turned_off
Röviden, az alábbi load-module sor tiltva legyen:/etc/pulse/default.pa
### Should be after module-*-restore but before module-*-detect
#load-module module-switch-on-port-available
Így működni fog a beépített hangszóró a visszakapcsolás után is. (Feltételezem ez a probléma, amit meg akarsz oldani). -
Jester01
veterán
válasz
tordaitibi #2558 üzenetére
Nálam jó. Nem tudom mi lehet. Tegyél be valami echo OK-t a wait függvénybe, azt 10 másodpercenként kellene kiírni. Esetleg próbáld ki simán parancssorban hogy sleep 10 && echo OK annak 10 másodperc után kell megjelennie. Lehet, hogy a sleep nálad nem úgy működik
-
-
Jester01
veterán
válasz
tordaitibi #2556 üzenetére
Elvileg a sleep 10 miatt 10 másodpercig vár, szóval nem pörgetheti a procit. Lehet hogy a te shelled nem szereti a wait nevet (mivel az egy beépített parancs is). Nevezd át valamire.
-
válasz
Jester01 #2554 üzenetére
Nagyon szépen köszönöm hogy foglalkozol a megoldással,
viszont nem jó.
Halvány sejtésem sincs, mit csinál a szkript, milyen körkörös folyamatokat hajt végre de amikor elindítom azonnal 60% lesz a procihasználat, és amíg killel ki nem lövöm, addig ennyi.
Viszont a többszöri tesztelések után se kapcsolja vissza a hdmi audiot.
Ez lenne cél ha a monitor visszajön alvásból, ez a
pactl set-card-profile 0 output:hdmi-stereo -
Jester01
veterán
válasz
tordaitibi #2553 üzenetére
#! /bin/bash
function wait
{
sleep 10
}
function monitor
{
xset q | grep -q "Monitor is On"
}
while true
do
while monitor
do
wait
done
while ! monitor
do
wait
done
pactl set-card-profile 0 output:hdmi-stereo
done
-
Sziasztok, feltettem máshol a kérdést és ide irányítottak.
Az lenne az elképzelésem,
a monitor elmegy alvóba, ez nálam 10 perc, a Képenyő kikapcsolása.
Majd amikor megmozgatom az egeret vagy más aktivitásra a monitor ébred, és ekkor le kéne futnia apactl set-card-profile 0 output:hdmi-stereo
parancsnak.Keresgéltem de lehet nem jó úton járok.
Addig eljutottam hogy a képernyő (monitor) állapotát így le lehet kérdezni:tibi@TibiXubuntu:~$ xset -q |grep Monitor
Monitor is On
tibi@TibiXubuntu:~$ sleep 10 ; xset -q |grep Monitor
Monitor is Off
A sleep 10 azért kellett a teszthez hogy az enter lenyomása után el tudjam küldeni a monitort alvóba az xset dpms force off paranccsal.
És jól működik mert a sleep utáni sor grep kimenetbe ott a Monitor is Off.
Ezt lefuttatgatva mondjuk 10 másodpercenként, ha a kimenet Off akkor értelemszerűen semmit nem kell csinálni, de ha átvált ON-ba, akkor egyszer le kéne futni apactl set-card-profile 0 output:hdmi-stereo
parancsnak.
De csak 1x, és utána nyugalom, a következő Off-On váltásig.Egyáltalán jó az ötlet, vagy hamvába holt?
Ha jó akkor viszont ennek a kivitelezése meghaladja a képességeimet, nem vagyok a szkript írás magyar bajnoka, tudna valaki adni egy kezdő kökést? -
Jester01
veterán
-
Headless
őstag
válasz
RedHarlow #2550 üzenetére
Amit bambano írt az ezzel a verzióval is kivitelezhető, ott egyedül az a gond, ha véletlenül a </User> szerepel egy CDATA-ban akkor onnantól kezdve hibás adatsorod lesz.
röviden törölsz minden újsort, pl: tr -d "\r\n" , <\User> delimiterrel szétdarabol új sorokra utána greppel már úgy szűrheted ahogy akarod.
-
RedHarlow
aktív tag
válasz
Jester01 #2549 üzenetére
Arra gondolsz, hogy a user tageken belül fix ugyan annyi tagnek kell lennie minden usernél? Ez sajnos lehet nem így van, mivel ha 2 notification-t is kapott az ügyfél akkor ha jól rémlik az plusz egy taget jelentett neki. :/
Valahogy így (a kipontozott rész azt akarja jelenteni, hogy sok másik tag):
<User>
...........................
<NotificationID> 4</NotificationID>
<NotificationID> 2</NotificationID>
..............................
</User> -
RedHarlow
aktív tag
Először is nagyon szépen köszönöm a tippeket.
Mi a különbség a parsolás és a csplit között?
Hogy mit is akarok csinálni:
Minden nap létrejön egy xml fájl a szerverem, amiből nekem ki kellene szednem azokat a "usereket" akiknél a notificationid tagek között 4 szerepel. Mivel mi csak velük oldagoznánk. A további felhasználást azonban egyelőre nem kérdeztem meg, hogy valid xml-re lenne-e szükség vagy csak az adatok a fontosak.Ha több száz user van egy xml-ben, a csplit létrehoz több száz fájlt? Én alapjáraton abban reménykedtem, hogy valami grep szerűséggel rá tudok szűrni és az eredményt simán el tudom menteni egy új fájlba.
Hétfő estig valahogy meg kellene oldanom ezt a feladatot.
-
bambano
titán
válasz
RedHarlow #2543 üzenetére
semennyire.
az egyik verzió, hogy ha van kéznél postgresql, akkor belerakod és azzal szétválogatod.a másik verzió, amit egyszerűbb az az, hogy csplit-tel szétdarabolod az xml fájlt annyi darabra, ahány user szekció van benne, a darabokból kiválogatod, ami kell, és utána összerakod újra.
tehát megoldod, hogy az user záró tag egyedül legyen külön sorban (sed-del két parancs), majd csplit-tel szétvágod a '</User>' delimiterrel.
-
dabadab
titán
-
RedHarlow
aktív tag
Sziasztok,
a segítségeteket szeretném kérni egy olyan shellscript megírásában ami elolvas egy xml-t és azokat az itemeket ahol a <NotificationID> tagek között 4-et talál egy új xml-be másolja. Mennyire bonyolult egy ilyet megírni? Az itemeket a <User></User> tagek választják el egymástól.
Tehát ha
<User>
...........................
<NotificationID> 4
</NotificationID>
..............................
</User> -
ЯΞD
senior tag
Sziasztok!
Szeretném megkérdezni ez milyen script? [link] (ti itt biztosan jobban tudjátok miben íródott)
Ki lehetne egészíteni, hogy ne csak hangjelzést adjon hanem kattintson is bele megjelenő figurába? -
Sonja
nagyúr
Van ~300db jpg/png file-om. Mindegyik 3168x2480-as felbontású. Hogy lehetne megoldani, hogy kettébe vágja, és két külön png/jpg file-ba tegye?
Tehát pl. a 3168x2480-as felbontású a.jpg fileból csináljon két 1584x2480-as a1.jpg és a2.jpg-t!
-
tjsz
senior tag
Sziasztok!
Azt szeretném megoldani, hogy a script-ben használt változók értékét egy log file-ba szeretném kiírni, de csak akkor ha bármelyik értéke változott.
A teszt script:
info1="yes"
info2="no"
file_log=/tmp/script.log
info_curr=""
info_prev=""
function script_log
{
echo "`date +%T` - PID:$$ - $*" >> "$file_log"
info_curr="Info1: $info1, info2: $info2"
if [ "$info_curr" != "$info_prev" ]; then
$info_prev=$info_curr
echo "`date +%T` - PID:$$ - $info_curr" >> "$file_log"
fi
}
script_log Sor1
info1="no"
script_log Sor2A script.log file létrejön, de a script futtatásakor hibát kapok:
root@Pc:/tmp# teszt2.sh
teszt2.sh: line 22: =Info1:: not found
teszt2.sh: line 25: =Info1:: not foundEnnek mi az oka?
Előre is köszönöm! -
-
-
dabadab
titán
válasz
Fecogame #2522 üzenetére
Sima különbséggel:
#!/bin/bash
PREV=0
MAXDIFF=0
cat x.txt | ( while read NUM ; do
DIFF=$(($NUM-$PREV))
if [ $DIFF -gt $MAXDIFF ] ; then
echo $PREV $NUM $DIFF
MAXDIFF=$DIFF
fi
PREV=$NUM
done ) | tail -1A százalék macerásabb, mivel a bash csak integerekkel tud számolni, ott meg kell hívni valami külső programot számolni (dc, bc, akármi) illetve figyelni, hogy ne akarj nullával osztani.
-
KrAt
veterán
válasz
Fecogame #2522 üzenetére
Egyszer csinaltam hasonlot, elkezdenem cut -d " " -f1 majd f2 stbstb parameterekkel szetszedni a szamokat, valtozokba berakni az egymas melletti szamokat, majd megszamolni a kulonbseget, es ha az nagyobb, mint az elozo kulonbseg, akkor azt is eltarolni egy valtozoban, ha nem, akkor tovabb az f2 f3, majd f3 f4, stbstb..
Biztos van szebb megoldas is, varjunk meg a tobbiekre
-
Van egy számsorom, pl.
2 3 4 5 10 9 7 8 10
Szeretném a legnagyobb ugrást/kilengést megtalálni, vagyis a fenti esetben a két egymás mellett lévő 5 és 10 értéket. A számok egy fájlban vannak, minden sorban egy szám.
A még jobb megoldás lenne ezt százalékos különbséggel megnézni :)
Logikailag ezt hogy lehetne kivitelezni?
-
Draken
őstag
Sziasztok!
Tudtok esetleg ajánlani olyan magyar irományt, aminek tanulmányozásával jobban átlátom/megértem a shell script világát? Másodsorban pedig bármilyen gyakorló oldalt is szívesen fogadok. Köszönöm! -
moltam
tag
Sziasztok!
Egy Armbian Bustert futtató Orange Pi One-on megoldottam, ha megnyomok egy nyomógombot, lefut egy sh script. A nyomógomb feladata lenne, hogy egy szolgáltatást leállítson és elindítson. Ezt 2 nyomógombbal meg tudnám oldani, az egyik olyan scriptet hívna elő, amiben systemctl start xy van, a másikban pedig systemctl stop xy.
Mindenképpen egy gombbal szeretném megoldani. A lényeg, hogy legyen egy sh script, amit ha futtatok megnézi, hogy fut-e xy service, ha fut akkor leállítja, ha nem akkor elindítja.
Sajnos nem tudok még önállóan ilyesmit megírni, és példát sem találtam. Van valakinek ötlete? -
dabadab
titán
válasz
Fecogame #2513 üzenetére
Valamiért nem működik, invalid context length argumenthibát ad a grep.
Azért, mert az iptablesben lévő -A-ról azt gondlja, hogy az neki szól
Erre az az általános megoldás, hogy az ember mond neki egy duplakötőjelet, onnan tudják a programok, hogy a továbbiakban nem lesz kötőjellel kezdődő paraméterük.grep -F -- "iptables -A INPUT -m state --state INVALID -j DROP"
Sajnos nem, break nélkül újra megkérdezi
De, a ;; breakeli a switchet, csak egyrészt bashban a switchet nem kell (és nem is lehet) expliciten breakelni, másrészt meg te ott a do-t akarod breakelni
Nem értem pontosan mire gondolsz itt.
Azt, hogy az ilyen scripteket nem a root home-jába illik telepíteni, hanm az /usr/local/sbin-be.
-
bhonti
aktív tag
Mondom: fgrep "akármi" hely
Ekkor nem mintaként tekint az "akármi" kifejezésre, hanem mint szót keresi meg... -
Váó, köszönöm a sok segítséget
Sorban:
Menü rendszer átvariálva, az észrevételek teljesen jogosak
Most már változókkal dolgozik a script. Teljesen abban voltam, hogy a case-ból kilépve elfelejti a belsejében definiált változókat.
A cron bejegyzés immáron az /etc/cron.d/ mappába kerül, és onnan is törli ki a fájlt uninstall-nál. Ésszerűbb, egyszerűbb, biztonságosabb. Jó észrevétel
a dirname $0/basename $0 az, szerintem, $0.
Így van. JavítvaTök jó lenne, ha ezt paranccsorból is meg lehetne adni, mert mondjuk .deb csomagot így elég nehéz csinálni belőle
Erre holnap ránézek.ja, és uninstallkor ezeket szerintem illene kiszedni az iptablesből.
Jogos. Ezt is holnap megnézem hogyan lehet egyszerűen kivitelezni.és ha jól emlékszem, case-hez shellben nem kell külön break, a ;; megoldja.
Sajnos nem, break nélkül újra megkérdezi, hogy mit szeretnék választani az étlapról és nem ugrik tovább.A harmadik sorhoz: ennek egyrészt az /usr/local/sbin-ben lenne a helye...
Nem értem pontosan mire gondolsz itt.a grepnek van egy -F kapcsolója...
Valamiért nem működik,invalid context length argument
hibát ad a grep. -
dabadab
titán
válasz
Fecogame #2504 üzenetére
Az iptableses részhez:
a grepnek van egy -F kapcsolója, ami kikapcsolja a regexpezést és akkor nem kellenek a backslashek, így aztán a komplett utasítást belerakhatod egy változóba, nem kell kétszer leírnod (mert előbb-utóbb biztos elírod az egyiket
)
szerk: ja, és uninstallkor ezeket szerintem illene kiszedni az iptablesből.
-
dabadab
titán
válasz
Fecogame #2504 üzenetére
A /var/spool/cron/crontabs/root első sora nálam (meg valószínűleg kb. minden unixon
) ez:
# DO NOT EDIT THIS FILE - edit the master and reinstall.
Ha crontabot akarsz installálni, akkor azt inkább úgy csináld, hogy rakj egy file-t az /etc/cron.d/-be. Nagyon ősi Linuxokon nem fog menni, de azokon lehet, hogy iptables sincs
-
bambano
titán
válasz
Fecogame #2504 üzenetére
ez a 101-102 sorok se tetszenek...
a dirname $0/basename $0 az, szerintem, $0.
de az idézőjeleket úgy nem lehet egymásba ágyazni szerintem.szerk: ha matatod a fájlrendszerben a root crontabját, akkor a cron-t illene újraindítani. de, szerintem nem így kellene matatni, hanem a /etc/cron.d alá berakni egy saját crontabot és azt törölni uninstallkor.
-
dabadab
titán
válasz
Fecogame #2504 üzenetére
Az opcióválasztáshoz:
1. Tök jó lenne, ha ezt paranccsorból is meg lehetne adni, mert mondjuk .deb csomagot így elég nehéz csinálni belőle
2. Ez a file-os megoldás elég... khm
Egyrészt nem biztos, hogy működik (pl. mi van, ha read only fs-en van?), meg az se jó, hogy szó nélkül töröl file-okat, ráadásul olyanokat, amiknek nincs túl egyedi neve (ha mindenképpen file-t akarsz használni, akkor érdemes egyrészt a /tmp-ben csinálni, másrészt a filenévhez hozzácsapni legalább a PID-et, de akára hostname-et is - pl. /tmp/akarmi.$HOSTNAME.$$ )
Viszont erre nincs szükség, egyszerűen rakd bele egy változóba:
PS3='Please enter your choice: '
options=("Install" "Uninstall" "Verify" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Install")
SEL=1 && break
;;
"Uninstall")
SEL=2 && break
;;
"Verify")
SEL=3 && break
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done -
Első GitHub projektem, kérnék építő jellegű kritikát, a topik témájából fakadóan főleg a kódra nézve
-
klambi
addikt
Szevasztok!
Egyszerű kérésem lenne: grep-el keresek fileokban egy részletet, és ki szeretném exportálni ezeket egy külön text fileba külön elérésre, de az eredeti file nevével. export nem gond ha egy fileba kell irányítani, de külön külön más más névvel már bajban vagyok
Új hozzászólás Aktív témák
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Kerékpársportok
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Kazy Computers - Fehérvár - Megbízható?
- Okos Otthon / Smart Home
- Melyik tápegységet vegyem?
- Fogyjunk le!
- Sony MILC fényképezőgépcsalád
- További aktív témák...
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- Xiaomi Redmi A3 128GB, Kártyafüggetlen, 1 Év Garanciával
- ÁRGARANCIA! Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RTX 5090 32GB GAMER PC termékbeszámítással
- Bomba ár! Lenovo ThinkPad T470 - i5-G6 I 8GB I 256GB SSD I 14" FHD I HDMI I Cam I W10 I Garancia!
- Fotó állvány eladó
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest