Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

קבצים והתקנות - הפעלה של תוכנה בעת עלייה

elcuco - 06/12/2022 - 23:42
נושא ההודעה: הפעלה של תוכנה בעת עלייה
מדובר על RaspberryPI עם מסך חיצוני. במיקרה שהוא התחבר לרשת, אני רוצה שהוא יפעיל:
קוד:

bpytop > /dev/console


ככה יציג על המסך שלו דברים מגניבים (בהחלט שטות, אל תשפטו אותי). החלטתי לעשות system service שיטפלבזה:
ציטוט:

[Unit]
Description="Run bpytop on console"

[Service]
Type=oneshot
ExecStart=/bin/open /bin/bash /usr/local/bin/banner.sh
TimeoutStartSec=1m

[Install]
WantedBy=network-online.target


זאת השגיאה שאני רואה:
קוד:

pie@raspberrypi:~ $ sudo systemctl status-banner.service
● banner.service - "Run bpytop on console"
     Loaded: loaded (/etc/systemd/system/banner.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Tue 2022-12-06 21:36:35 GMT; 3min 20s ago
    Process: 401 ExecStart=/bin/open /bin/bash /usr/local/bin/banner.sh (code=exited, status=3)
   Main PID: 401 (code=exited, status=3)
        CPU: 546ms

Dec 06 21:36:33 raspberrypi systemd[1]: Starting "Run bpytop on console"...
Dec 06 21:36:35 raspberrypi open[401]: Error: no "view" mailcap rules found for type "application/x-pie-executable"
Dec 06 21:36:35 raspberrypi open[401]: Error: no "view" mailcap rules found for type "application/x-sh"
Dec 06 21:36:35 raspberrypi systemd[1]: infiniplex-banner.service: Main process exited, code=exited, status=3/NOTIMPLEMENTED
Dec 06 21:36:35 raspberrypi systemd[1]: infiniplex-banner.service: Failed with result 'exit-code'.
Dec 06 21:36:35 raspberrypi systemd[1]: Failed to start "Run bpytop on console".


והתוכן של התסריט המדובר הוא:
קוד:

pie@raspberrypi:~ $ cat /usr/local/bin/banner.sh
#! /bin/sh

bpytop --boxes "net cpu mem" > /dev/console


למישהו יש רעיון איך לטפל בזה?
Anonymous - 07/12/2022 - 06:17
נושא ההודעה:
אתה משתמש ב open שאומר כי יש לך בעיה עם חוק mailcap

הייתי משתמש במשהו כמו

קוד:
/bin/sh


להריץ, ולראות את ההתנהגות, אולי זה יפתור את הבעיה (בנוסף לכך שהוא לא יודע לפתוח קבצי sh).
elcuco - 07/12/2022 - 06:41
נושא ההודעה:
Anonymous :
אתה משתמש ב open שאומר כי יש לך בעיה עם חוק mailcap

הייתי משתמש במשהו כמו

קוד:
/bin/sh


להריץ, ולראות את ההתנהגות, אולי זה יפתור את הבעיה (בנוסף לכך שהוא לא יודע לפתוח קבצי sh).


בדיוק מה שחשבתי - אין לי מסוף זמין באותו שלב. בגלל זה ניסיתי את open ואת ‏/usr/bin/open וגם screen. כולם נותנים את אותה תוצאה - קריא לא עובד.

אני גם חושד, שהשירות מתחיל מהר מדי (אני רואה את ההודעה לפני ש-login מתחיל - ואני ביקשתי שיופעל דקה לאחר הפעלת רשת).
Anonymous - 07/12/2022 - 07:11
נושא ההודעה:
elcuco :
Anonymous :
אתה משתמש ב open שאומר כי יש לך בעיה עם חוק mailcap

הייתי משתמש במשהו כמו

קוד:
/bin/sh


להריץ, ולראות את ההתנהגות, אולי זה יפתור את הבעיה (בנוסף לכך שהוא לא יודע לפתוח קבצי sh).


בדיוק מה שחשבתי - אין לי מסוף זמין באותו שלב. בגלל זה ניסיתי את open ואת ‏/usr/bin/open וגם screen. כולם נותנים את אותה תוצאה - קריא לא עובד.

אני גם חושד, שהשירות מתחיל מהר מדי (אני רואה את ההודעה לפני ש-login מתחיל - ואני ביקשתי שיופעל דקה לאחר הפעלת רשת).


אז חסר לך hook של

קוד:
after=networking.service


וכנראה אולי עוד הגדרה בנושא של ה login (לא מכיר בעל פה, צריך לבדוק בתיעוד של systemd).
Anonymous - 07/12/2022 - 09:35
נושא ההודעה:
לא לגמרי ברור לי אם בשלב הזה מובטח שיהיה חיבור רשת. מתי צריך להריץ את זה? כשיש חיבור רשת בזמן העליה? כל פעם שמתעדכן חיבור הרשת?
elcuco - 07/12/2022 - 14:40
נושא ההודעה:
צפריר :
לא לגמרי ברור לי אם בשלב הזה מובטח שיהיה חיבור רשת. מתי צריך להריץ את זה? כשיש חיבור רשת בזמן העליה? כל פעם שמתעדכן חיבור הרשת?


אני רוצה להציג "bpytop" אחרי שקיבלתי ip. במיקרים כאלו - אני יכול לגשת למכונה מרוחוק (אני יודע מה ה-ip). במצב שאין חיבור רשת - אזי במסוף אני אקבל את login.
Anonymous - 07/12/2022 - 15:08
נושא ההודעה:
elcuco :
צפריר :
לא לגמרי ברור לי אם בשלב הזה מובטח שיהיה חיבור רשת. מתי צריך להריץ את זה? כשיש חיבור רשת בזמן העליה? כל פעם שמתעדכן חיבור הרשת?


אני רוצה להציג "bpytop" אחרי שקיבלתי ip. במיקרים כאלו - אני יכול לגשת למכונה מרוחוק (אני יודע מה ה-ip). במצב שאין חיבור רשת - אזי במסוף אני אקבל את login.


אז hook נוסף ל after הוא:

קוד:
require=networking


שיבטיח כי אם אין רשת הוא לא יעלה, ואם מורידים את הרשת (מבחינת שירות) הוא גם ירד.
Anonymous - 07/12/2022 - 16:47
נושא ההודעה:
אז נראה לי שרצוי להשתמש בסקריפט שמורץ כשידוע שיש כתובת:
https://networkmanager.dev/docs/api/latest/NetworkManager-dispatcher.html
Anonymous - 07/12/2022 - 16:58
נושא ההודעה:
מה שכן, אם הפקודה שלך תורץ יותר מפעם אחת, היא תפתח TTY חדש בכל הרצה.
קוד:

/bin/openvt -c 2 --  /bin/bash /usr/local/bin/banner.sh


אבל במחשבה שניה, אם אתה מריץ מתוך systemd אתה יכול לבקש ממנו לטפל בפרטים הללו, כמו שנעשה ב:
/lib/systemd/system/getty@.service
כל הזמנים הם GMT + 2 שעות