Hi,
ich weiß nicht, ob ich zu blöd bin, aber ein simples{system("ls -l")}
gibt mir nichst aus, sondern eine Anzeige/Rückgabewert mit-1
Ich möchte eigentlich was anderes ins system rufen, bekomm aber immer -1 als exit.
Ich hab schon sämtliche Varianten versucht,
{system("ls -l")};
{system("ls -l")};;
{system('ls -l')}
{system "ls -l"}
{system "ls -l"}
{system "ls \-l"}
{system("ls -l")};
... immer -1...
was ich eigentlich machen will, meinem raspi ein Umschalten des audio-outputs (hdmi/3.5mm) beibringen:
{system("amixer cset numid=3 2")}
{system("amixer cset numid=3 1")}
immer -1
ich verräck... :o
{ `ls -l ` }
:-)
rudi, danke
jetzt nehm ich das ganze und versuch das was ich machen will
{`amixer cset numid=3 2`}
{`amixer cset numid=3 1`}
--> Kein soundwechsel zwischen hdmi/phone
wenn ich das aus der commandref nehm:
{system ("mplayer /home/pi/t.mp3 &")}
hör ich nix...
process wird gestartet:
pi@livingpi:~ $ ps -aux|grep mpla
fhem 1167 16.0 2.9 154032 27500 ? Sl 19:38 0:00 mplayer /home/pi/t.mp3
ich hab die befehle schon in ein sh-file gepackt und aufgerufen --> das gleiche
:o
darf den der User fhem es? auf der Kommandozeile (user fhem) probiert?
sudo addgroup fhem audio
das war's -> mplayer-audio regt sich...
allerdings funzt die Sache mit der Umschaltung hdmi/3.5mm noch nicht
{`amixer cset numid=3 2`}
{`amixer cset numid=3 1`}
amixer hat den ls:
-rwxr-xr-x 1 root root 43056 Jul 17 2014 /usr/bin/amixer
müßte ich dann auch fhem zum ändern ertüchtigen.
zu welcher gruppe muss fhem ich dann hinzufügen, damit fhem den amixer ändern darf?
Sorry, aber "was funzt mit amixer ned"?
Fehlermeldung?
Jeder User darf das Programm amixer ausführen, da es für jeden lesbar (x) und ausführbar (x) ist.
Das Programm greift aber auf Hardware zu, was einem Benutzer, der "vor dem Geraet sitzt", zugeordnet ist.
Wenn das jeder, der angemeldet ist, verstellen koennte, waere das ein Sicherheitsloch.
Ich habe nur gesagt, das es "ausführbar" ist. Nicht, das das Programm auch die Hardware ändert .... ;o)
Btw: es könnte nicht nur ein Hardware sondern auch ein Softwaremixer sein ...
Ich hab ne Lösung füt meinen Anwendungsfall, am woe bau ichs komplett in mein fhem ein, dann kommts hier rein.
Gesendet von meinem GT-I9301I mit Tapatalk
so, wie versprochen meine Lösung.
Setup ist folgendes
- (1) Fhem auf Banana
- (2) entfernter Kodi auf Raspberry-3 (kodi auf raspian) mit HDMI-Conn zum TV
(2) hat die Eigenheit, dass der audio-output definiert werden muss: hdmi ODER 3,5-klinke.
Wenn jetzt auf hdmi, ist mit phone nix mehr los.
Ich will jedoch den Fernseher trotzdem ausschalten können und per 3,5-klinke (2) als dlna-renderer betreiben können
Initial, wie oben erhofft, wollte ich auf (2) mit einem lokalen fhem den amixer von phone auf hdmi (vice versa) umstellen,
je nach dem, ob der SmartTV present/absent ist.
Geile Idee, denkt sicht der geneigte user.
Hat jedoch an den Rechten gescheitert (siehe oben)
Lösung, um den amixer (hdmi/phone) von (2) von (1) aus umzuschalten
(ist aber für meine Anwendungsfall noch nicht final, der der gestartete Kodi (standalone) den pulseaudio festhält, nicht amixer, hier muss ich nochmal ran, es wird aber...)
vorher installieren:
cpan -i Net::OpenSSH
sub in 99_myUtils.pm
sub RemoteSoundOutputDevSwitch(@)
{
my ($ip, $user, $pass, $outputDev) = @_;
my $set = "amixer cset numid=3 2"; #default hdmi
my %opts;
$opts{user} = $user;
$opts{password} = $pass;
use Net::OpenSSH;
my $ssh = Net::OpenSSH->new($ip, %opts, master_opts => [-o => "UserKnownHostsFile=/dev/null", -o => "StrictHostKeyChecking=no"]);
$ssh->error and
die "Couldn't establish SSH connection: ". $ssh->error;
if($outputDev =~ /hdmi/)
{
$set = "amixer cset numid=3 2";
}
elsif($outputDev =~ /phone/)
{
$set = "amixer cset numid=3 1";
}
$ssh->system($set) or
die "remote command failed: " . $ssh->error;
undef $ssh;
return 1;
}
abhängig, ob TV absent/present, oder was auch immer on/off, folgendes doif:
<ip>, <user>, <passwd> durch eures ersetzen
define DI_SwitchAudioOutput DOIF ([TV] eq "absent")\
({RemoteSoundOutputDevSwitch("<ip>","<user>","<passwd>","phone")})\
DOELSEIF ([TV] eq "present")\
({RemoteSoundOutputDevSwitch("<ip>","<user>","<passwd>","hdmi")})
attr DI_SwitchAudioOutput do always
attr DI_SwitchAudioOutput room TEST
define TV dummy
attr TV room TEST
attr TV webCmd absent:present
Somit wird per ssh-login das ausgeführt, was ich auf der remote-kiste will.
kann natürlich auch was anderes sein, als <user>, root sollt nix machen dürfen natürlich.
Soweit... wenn ich den kodi jetzt noch vom pulseaudio lösen kann, meld ich mich hier wieder. sollte aber (hoffentlich) nicht das soooo Problem darstellen :-)
das Paket Net::SSH::Perl funktioniert auf meinem bananapi übrigens nicht, obwohl es auf pc korrekt läuft.
hatte hier irrsinnig schwierigkeiten, das zu isntallieren, erst libs gesucht, dann cpan, dann direkt runtgeladen und kompiliert.
nachdem es endlich installiert war hab ich fehlermeldungen zu crypto-libs bekommen, deren versionen anscheinend auf dem system kollidieren bzw. fehlerhaft sind oder nicht ansprechbar sind.
daher der ausweg zur alternative openssh
Zitat von: knopf_piano am 11 Februar 2017, 17:56:35
Initial, wie oben erhofft, wollte ich auf (2) mit einem lokalen fhem den amixer von phone auf hdmi (vice versa) umstellen,
je nach dem, ob der SmartTV present/absent ist.
Geile Idee, denkt sicht der geneigte user.
und wenn der geneigt user vorher auch mal im kodi nachgeschaut hätte, hätte er gesehen, dass der kodi die option bietet, Audio über hdmi UND analog auszugeben.
Somit hak ich den thread und mein vorhaben unter "wieder was gelernt" ab. ::)
greets
Und eigentlich kannst Du das Packet netssh auch über die Distri beziehen. Hat den Vorteil, gegenüber cpan, das bei aktuallisierungen es gleich it aktuallisiert wird. Sonst könnte es zu schwierigkeiten kommen ...
Hab ich gemacht, wie geschrieben: auf bananian nicht möglich wg nicht passenden crypto libs. Auf pc (mint) wars kein problem.
Gesendet von meinem SM-J510FN mit Tapatalk
Laut Deinem Beitrag nicht, siehe
cpan -i Net::OpenSSH
Net::OpenSSH ist was anderes als Net::SSH::Perl, wie geschrieben
Jep .. mein Hinweis war aber nur, es lieber erstmal mit den Distri-Möglichkeiten zu Probieren als gleich cpan zu nehmen.
cpan hat den Vorteil der aktuallität, den Nachteil das es an den Distri-Möglichkeiten vorbei opperiert, d.h. z.B. bei einem Update .....
Dass stimmt natürlich. da bin ich auch deiner meinung.