Hirdetés

2021. január 16., szombat

Gyorskeresés

Hozzászólások

(#2501) sonar válasza Jester01 (#2500) üzenetére


sonar
addikt
LOGOUT blog

Mivel nincs külön expect topic, inkább házhoz jött a trollért :D
És valóban müxik! :R Köszi!

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#2502) klambi


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 :(

"Mond szépen angolul: Gyors róka!"

(#2503) Jester01 válasza klambi (#2502) üzenetére


Jester01
veterán

for i in *.txt
do
grep foo "$i" > "$i.grep"
done

Igény szerint lehet módosítani.

Jester

(#2504) Fecogame


Fecogame
veterán

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 :)

Portscan Protection

:R

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#2505) bambano válasza Fecogame (#2504) üzenetére


bambano
titán
LOGOUT blog

miért ez a ragaszkodás a művelet negálásához?
pl:
[ ! $(id -u) = 0 ] &&

lezso6 szerint a user: rossz számtech karmája van | @netik: There is no Internet of Things. There are only many unpatched, vulnerable small computers on the Internet.

(#2506) dabadab válasza Fecogame (#2504) üzenetére


dabadab
titán

A harmadik sorhoz: ennek egyrészt az /usr/local/sbin-ben lenne a helye, másrészt én abszolút nem ragaszkodnék ahhoz, hogy ez be legyen betonozva a scriptbe.

DRM is theft

(#2507) bambano válasza Fecogame (#2504) üzenetére


bambano
titán
LOGOUT blog

ez a 60-74 sorok se túl jók, touch-olsz fájlokat, amik lehet, hogy léteztek a fájlrendszerben, majd letörlöd őket...

és ha jól emlékszem, case-hez shellben nem kell külön break, a ;; megoldja.

lezso6 szerint a user: rossz számtech karmája van | @netik: There is no Internet of Things. There are only many unpatched, vulnerable small computers on the Internet.

(#2508) dabadab válasza Fecogame (#2504) üzenetére


dabadab
titán

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

DRM is theft

(#2509) bambano válasza Fecogame (#2504) üzenetére


bambano
titán
LOGOUT blog

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.

[ Szerkesztve ]

lezso6 szerint a user: rossz számtech karmája van | @netik: There is no Internet of Things. There are only many unpatched, vulnerable small computers on the Internet.

(#2510) dabadab válasza Fecogame (#2504) üzenetére


dabadab
titán

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 :)

[ Szerkesztve ]

DRM is theft

(#2511) dabadab válasza Fecogame (#2504) üzenetére


dabadab
titán

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.

[ Szerkesztve ]

DRM is theft

(#2512) bhonti válasza dabadab (#2511) üzenetére


bhonti
tag

Amit egyszerűbben akár úgy is lehetne írni, hogy "fgrep"...

iPhone SE: Á, nem tudtam hova tenni azt az iránytűt, hát az a Safari, oké... :D :Caszittem vmi navi... :Y

(#2513) Fecogame


Fecogame
veterán

Váó, köszönöm a sok segítséget :R 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 :K

a dirname $0/basename $0 az, szerintem, $0.
Így van. Javítva :K

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
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 argumenthibát ad a grep.

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#2514) bhonti


bhonti
tag

Mondom: fgrep "akármi" hely
Ekkor nem mintaként tekint az "akármi" kifejezésre, hanem mint szót keresi meg...

iPhone SE: Á, nem tudtam hova tenni azt az iránytűt, hát az a Safari, oké... :D :Caszittem vmi navi... :Y

(#2515) dabadab válasza Fecogame (#2513) üzenetére


dabadab
titán

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.

DRM is theft

(#2516) Fecogame válasza dabadab (#2515) üzenetére


Fecogame
veterán

Köszi, mindegyik javítva :) :R

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#2517) moltam


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?

(#2518) Fecogame válasza moltam (#2517) üzenetére


Fecogame
veterán

#!/bin/sh
systemctl is-active --quiet XY && systemctl stop XY || systemctl start XY

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#2519) moltam válasza Fecogame (#2518) üzenetére


moltam
tag

Köszönöm!

(#2520) Draken


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!

(#2521) snowdog válasza Draken (#2520) üzenetére


snowdog
veterán

(#2522) Fecogame


Fecogame
veterán

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?

[ Szerkesztve ]

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#2523) KrenAtesz válasza Fecogame (#2522) üzenetére


KrenAtesz
veterán

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 :)

[ Szerkesztve ]

(#2524) dabadab válasza Fecogame (#2522) üzenetére


dabadab
titán

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 -1

A 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.

[ Szerkesztve ]

DRM is theft

(#2525) f_sanyee válasza Fecogame (#2522) üzenetére


f_sanyee
aktív tag


#!/usr/bin/awk -f
BEGIN {
max_diff=0;
n1=0;
n2=0;
prev=0;
} {
if ( ($1 - prev) > max_diff ) {
n1=prev
n2=$1
max_diff=n2-n1
}
prev=$1
} END {
print n1, n2, "diff:", max_diff
}

nem tudom a %-ot hogy gondoltad.

[ Szerkesztve ]

(#2526) bambano válasza dabadab (#2524) üzenetére


bambano
titán
LOGOUT blog

"ott meg kell hívni valami külső programot számolni": vagy érteni kell az elemi matematikához... mondjuk a negatív számok bekavarnak.
elvileg: a(x+1)/a(x)<a(x+2)/a(x+1) ezt megszorzod a(x)*a(x+1)-gyel:
a(x+1)*a(x+1)<a(x)*a(x+2)
ez számolható bash-ban.

lezso6 szerint a user: rossz számtech karmája van | @netik: There is no Internet of Things. There are only many unpatched, vulnerable small computers on the Internet.

(#2527) bambano válasza f_sanyee (#2525) üzenetére


bambano
titán
LOGOUT blog

ez a "} {" meg "} END {" elég ronda szintaktika. szerintem érdemesebb lenne az awk eredeti formájához ragaszkodni.

lezso6 szerint a user: rossz számtech karmája van | @netik: There is no Internet of Things. There are only many unpatched, vulnerable small computers on the Internet.

(#2528) Fecogame


Fecogame
veterán

KrenAtesz, dabadab, f_sanyee, bambano, köszönöm a válaszokat! :)

Újabb feladvány:

El szeretném távolítani az üres sorokban lévő tabokat és space-kat, viszont nem törölni az üres sorokat.

Kiindulási állapot:

És ez lenne az eredmény:

Gyanítom, hogy sed és/vagy awk lenne az eszköz, na de hogyan? :)

[ Szerkesztve ]

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#2529) cattus válasza Fecogame (#2528) üzenetére


cattus
őstag

sed -r 's/^\s+$//g' filename

Ez elvileg csak azokat a sorokat teszi üressé (meghagyva a sortörést), amiben csak whitespace van.

Do the thing!

(#2530) Fecogame válasza cattus (#2529) üzenetére


Fecogame
veterán

Tökéletes, köszönöm :R

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#2531) tjsz


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 Sor2

A 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 found

Ennek mi az oka?
Előre is köszönöm!

(#2532) bambano válasza tjsz (#2531) üzenetére


bambano
titán
LOGOUT blog

ez:
$info_prev=$info_curr
nemigen lesz jó.
amikor értéket akarsz adni egy változónak, akkor a változó neve számít, ezért nem írunk elé $-t.

[ Szerkesztve ]

lezso6 szerint a user: rossz számtech karmája van | @netik: There is no Internet of Things. There are only many unpatched, vulnerable small computers on the Internet.

(#2533) Headless válasza tjsz (#2531) üzenetére


Headless
őstag

shellben a function definició sem lesz jó így.

function_name(){
     echo "esetleg így"
}

LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/

(#2534) tjsz válasza bambano (#2532) üzenetére


tjsz
senior tag

Szia!

Köszi, nagyon fáradt voltam.....

(#2535) bhonti válasza tjsz (#2534) üzenetére


bhonti
tag

Hát igen, néha jobban jár az ember, ha inkább alszik egyet, utána 5p alatt megoldódik... ;)

iPhone SE: Á, nem tudtam hova tenni azt az iránytűt, hát az a Safari, oké... :D :Caszittem vmi navi... :Y

(#2536) tjsz válasza Headless (#2533) üzenetére


tjsz
senior tag

Köszi!

(#2537) Sonja


Sonja
veterán

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? :F Tehát pl. a 3168x2480-as felbontású a.jpg fileból csináljon két 1584x2480-as a1.jpg és a2.jpg-t!

Gye­re­ket is le­het utál­ni, csak szív kell hoz­zá!

(#2538) bambano válasza Sonja (#2537) üzenetére


bambano
titán
LOGOUT blog

[link]

lezso6 szerint a user: rossz számtech karmája van | @netik: There is no Internet of Things. There are only many unpatched, vulnerable small computers on the Internet.

(#2539) Sonja válasza bambano (#2538) üzenetére


Sonja
veterán

Tökéletes! :C Köszönöm! :R

Gye­re­ket is le­het utál­ni, csak szív kell hoz­zá!

(#2540) ЯΞD


ЯΞ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?

Amíg az arcod nagyobb mint a tudásod, addig csak egy bohóc vagy!

(#2541) Headless válasza ЯΞD (#2540) üzenetére


Headless
őstag

javascript elvégre, böngésző kiegészítőről és böngészős alkalmazásról beszélünk. de ezt nem hírdetgetném. sehol sem, és a kattintgatás lehetőségét sem keresném a helyedben. Ugyanis ha rájönnek biztosan, tiltást fogsz kapni.

LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/

(#2542) ЯΞD válasza Headless (#2541) üzenetére


ЯΞD
senior tag

5-6 éve használják és soha nem volt tiltás senkinek. Illetve minden évben a top 50 biztosan nem ül 0-24-ben a monitort bámulva és kapja el a figurákat. Ők sem kaptak sohasem szankciót. Pedig ők még jutalmat is felmarkolják...

[ Szerkesztve ]

Amíg az arcod nagyobb mint a tudásod, addig csak egy bohóc vagy!

(#2543) RedHarlow


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>

(#2544) dabadab válasza RedHarlow (#2543) üzenetére


dabadab
titán

XML-t parsolni nem triviális feladat, ez bőven túl van azon a szinten, amit shell scriptben épeszűen meg lehet csinálni.
Ha már script meg XML, akkor mondjuk Python, ahhoz van rendes xml parser library és ott ez kb. néhány tíz sorból megvan, értelmes sebességgel.

[ Szerkesztve ]

DRM is theft

(#2545) bambano válasza RedHarlow (#2543) üzenetére


bambano
titán
LOGOUT blog

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.

lezso6 szerint a user: rossz számtech karmája van | @netik: There is no Internet of Things. There are only many unpatched, vulnerable small computers on the Internet.

(#2546) dabadab válasza bambano (#2545) üzenetére


dabadab
titán

Ez egyébként valószínűleg ebben az esetben működni fog, de tényleges parse-olás nélkül nem lehet eldönteni, hogy a szembejövő "</User>" string az tényleg zárótag vagy mondjuk egy CDATA része.

DRM is theft

(#2547) Jester01 válasza RedHarlow (#2543) üzenetére


Jester01
veterán

Ahogy írták fentebb, ez nem xml parsolás lesz, de ha ismert fix formában van akkor egyszerűen megoldható. A példádból nem derül ki pontosan mi a formátum de akár egy grep -B 3 -A 5 '<NotificationID> 4' jellegű egysoros is jó lehet.

Jester

(#2548) RedHarlow


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. :(

[ Szerkesztve ]

(#2549) Jester01 válasza RedHarlow (#2548) üzenetére


Jester01
veterán

Ahogy mondtam, működhet a grep de ahhoz elég fix xml formátum kell.

Jester

(#2550) RedHarlow válasza Jester01 (#2549) üzenetére


RedHarlow
aktív tag

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>

(#2551) Headless válasza RedHarlow (#2550) üzenetére


Headless
őstag

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.

LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/

(#2552) Jester01 válasza RedHarlow (#2550) üzenetére


Jester01
veterán

awk-val ilyesmi, ha soronként vannak a tag-ek és semmi huncutság nincs (pl. CDATA):

BEGIN { ORS=""; }
/^<User>/ { matched=0; buffer=""; }
{ buffer=buffer $0 RT; }
/^<NotificationID>4<\/NotificationID>/ { matched=1; }
/^<\/User>/ { if (matched) print buffer; }

Jester

(#2553) tordaitibi


tordaitibi
őstag

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 a
pactl 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 a pactl 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?

[ Szerkesztve ]

(#2554) Jester01 válasza tordaitibi (#2553) üzenetére


Jester01
veterán

#! /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

Jester

(#2555) RedHarlow válasza Jester01 (#2552) üzenetére


RedHarlow
aktív tag

Köszönöm, jó volt az irány. :)

(#2556) tordaitibi válasza Jester01 (#2554) üzenetére


tordaitibi
őstag

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

(#2557) Jester01 válasza tordaitibi (#2556) üzenetére


Jester01
veterán

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.

[ Szerkesztve ]

Jester

(#2558) tordaitibi válasza Jester01 (#2557) üzenetére


tordaitibi
őstag

Átneveztem, nincs változás. A szkrip indítása után 10 másodperccel 1 mag 100% az össz procihasználat 60 feletti. Ha kilövöm akkor visszáll 2-3%-ra.

(#2559) Jester01 válasza tordaitibi (#2558) üzenetére


Jester01
veterán

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 :F

Jester

(#2560) bambano válasza Jester01 (#2554) üzenetére


bambano
titán
LOGOUT blog

bash-ban van wait nevű beépített függvény...
wait a háttérfolyamat leállására vár, de mivel nincs háttérfolyamat, ezért azonnal visszatér.
javaslom a wait-ot átírni pl. mywait-re.

lezso6 szerint a user: rossz számtech karmája van | @netik: There is no Internet of Things. There are only many unpatched, vulnerable small computers on the Internet.

(#2561) Siriusb válasza tordaitibi (#2553) üzenetére


Siriusb
veterán

É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).

(#2562) tordaitibi válasza Siriusb (#2561) üzenetére


tordaitibi
őstag

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.

[ Szerkesztve ]

(#2563) Jester01 válasza tordaitibi (#2562) üzenetére


Jester01
veterán

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.

Jester

(#2564) Siriusb válasza tordaitibi (#2562) üzenetére


Siriusb
veterán

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.

(#2565) tordaitibi válasza Siriusb (#2564) üzenetére


tordaitibi
őstag

Nem én hanem Jester, esetleg az én érdemem az ötlet, de a kivitelezés őt dícséri. :)

(#2566) RedHarlow


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

(#2567) bambano válasza RedHarlow (#2566) üzenetére


bambano
titán
LOGOUT blog

a riportoló szkript külön környezetben fut le, abból a hívó felé nem megy adat.

lezso6 szerint a user: rossz számtech karmája van | @netik: There is no Internet of Things. There are only many unpatched, vulnerable small computers on the Internet.

(#2568) RedHarlow válasza bambano (#2567) üzenetére


RedHarlow
aktív tag

Akkor ebben az esetben az a legszebb megoldás, ha a riportoló script egy temp fájlba kiírja az útvonalat és a hívó abból nyeri majd ki?

(#2569) bambano válasza RedHarlow (#2568) üzenetére


bambano
titán
LOGOUT blog

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.

lezso6 szerint a user: rossz számtech karmája van | @netik: There is no Internet of Things. There are only many unpatched, vulnerable small computers on the Internet.

(#2570) Jester01 válasza bambano (#2569) üzenetére


Jester01
veterán

Harmadik verzió: a riportoló scriptet source-olod akkor ugyanabban a környezetben fog futani.

De a legszebb és az általánosan jellemző az valóban a hívóban meghatározni.

[ Szerkesztve ]

Jester

(#2571) sonar


sonar
addikt
LOGOUT blog

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 egy info 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"

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#2572) sonar válasza sonar (#2571) üzenetére


sonar
addikt
LOGOUT blog

A megoldás roppant egyszerű.
Lemaradt a végéről az eof
expect eof

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#2573) I02S3F


I02S3F
senior tag

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?)

(#2574) Fecogame válasza I02S3F (#2573) üzenetére


Fecogame
veterán

Attól függ, hogy live futtatod vagy crontabból. Ha az előbbi, akkor screenre mehet az output, ha pedig cronból, akkor fájlba (vagy crontab-ba beleírni a mailto-t ha tud a szerver emailt küldeni).

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#2575) I02S3F válasza Fecogame (#2574) üzenetére


I02S3F
senior tag

Király! Köszi! :)

Copyright © 2000-2021 PROHARDVER Informatikai Kft.