Yeti hat geschrieben: ↑14.08.2019 20:55
Okay, wir könnte mal Hilfe von der Linux-Fraktion gebrauchen.
...
Ich lese die Anfrage leider erst jetzt und versuche mal etwas verspätet ein paar Antorten zu geben, wobei ich nicht ganz sicher bin dass ich das Problem richtig erfasst habe:
a) Es soll die Anzahl der im SETI-Projektverzeichnis vorhandenen Dateien mit Namen "*.vlar" ermittelt werden
Im Prinzip ginge das (ohne die Berechtigungsproblematik - s.u.) einfach mit einer Zeile
Code: Alles auswählen
ls /var/lib/boinc/projects/setiathome.berkeley.edu/*.vlar | wc -l
Oder wenn es als (Skript-)Kommando mit etwas mehr Struktur abgelegt werden soll, eine Datei zum Beispiel als
/usr/local/bin/count_seti_jobs anlegen in der
Code: Alles auswählen
#!/bin/sh
SETI_PROJECT_DIR=/var/lib/boinc/projects/setiathome.berkeley.edu
FILE_NAME_PATTERN='*.vlar'
ls $SETI_PROJECT_DIR/$FILE_NAME_PATTERN | wc -l
steht. Die Variable
SETI_PROJECT_DIR ist natürlich passend abzuändern, insbesondere bei Nutzung von Bunkern. Diese Datei nun per
ausführbar machen. Danach reicht dann einfach ein Aufruf von
um die Anzahl der
"*.vlar"-Dateien zu ermitteln.
b) Berechtigungen
Das klappt jetzt noch nicht so unbedingt, zumindest nicht für das reguläre BOINC-Projektverzeichnis. Das Standard BOINC-Projektverzeichnis
/var/lib/boinc/projects ist (zumindest bei Debian, Ubuntu, ???) nur für den Nutzer
boinc (und natürlich
root) lesbar. Da könntest Du Dir mit
weiterhelfen, vorausgesetzt der account den Du nutzt darf zumindest
/usr/local/bin/count_seti_jobs mit Superuserrechten Befehle ausführen (was über die
/etc/sudoers Datei gesteuert wird).
Wenn Du Bunker unter einem regulären Nutzeraccount anlegst, wird es viel einfacher. Dann benutzt Du einfach den account und den Pfadnamen (für das SETI-Projektverzeichnis) unter dem Du die Bunker anlegst und verwaltest und hast dann auf diese ja eh Zugriff.
c) Remote Zugriff
Viele Möglichkeiten, ich bleibe mal beim recht gängigen Verfahren sowas per
SSH und
SSH-Konfiguration zu erledigen. Das könnte auch im Remote-Zugriff von Windows-hosts funktionieren, ein installierter
SSH-Client vorausgesetzt.
Ziel ist es per SSH auf den remote-host zu kommen, auf einer Kommandozeile auf dem Ausgangshost sollte also ein
dieses Wunder vollbringen. Die Angabe des Nutzernamens ist nur notwendig, wenn es auf dem remote-Rechnerein anderer name als auf dem Ausgangsrechner ist.
Typischerweise kommt dann eine Passwortabfrage, was mit Skripten mühsam ist und Passwörter sollen wir ja auch nicht in Skripte schreiben (meint der Sicherheitsexperte).
SSH bietet da den Ausweg über einen Schlüssel zu arbeiten. Ums einfach zu halten leg (wenn es noch nicht geschehen ist) einen solchen Schlüssel per
an, generiere einen Schlüssel ohne Passphrase, ansonsten musst auch noch einen
SSH-AGENT laufen lassen. Dadurch wird eine private und eine öffentliche Schlüsseldatei generiert (wie die heissen und wo die leigen hängt so etwas vom System ab). Der Inhalt der öffentlichen Datei (z.B. unter Linux ~/.ssh/id_ed25519.pub) wird im Zielaccount auf dem Zielrechner unter
~/.ssh/authorized_keys ablegt (neue Datei anlegen, oder dem bestehenden Inhalt dieser Datei hinzufügen). Danach sollte der Login ohne Passwortabfrage funktionieren, natürlich nur von dem Account und Rechner aus, auf dem sich der private Schlüssel befindet.
Das mit den Rechten lässt sich auch erledigen indem der Linuxhost in eine Windowsdomaine eingebunden wird. Aber da werfe ich jetzt nur die Stichworte
PAM, SSSD, Kerberos, LDAP als Hinweis in diese Notiz. Das ist dann doch etwas komplizierter und halt verschiedene mögliche Umsetzungen
.
d) Remote Command Execution
Die '*.vlar'-Dateien zu zählen könnte per
jetzt schon funktionieren. Der Teufel steckt aber wahrscheinlich im Detail. Für das Standard BOINC-Projektverzeichnis kommt erschwerend hinzu, dass der Nutzer "boinc" unter dessen Account der boinc-client regulär läuft sich meist gar nicht remote einloggen darf. Also besser einen regulären Account nutzen und per
sudo wie oben beschrieben arbeiten.
e) Sonstiges
Natürlich lässt sich all dies auch für andere Aufgaben, auch zum löschen der
global_prefs_override.xml nutzen.
Code: Alles auswählen
ssh [username@]host rm /etc/boinc-client/global_prefs_override.xml
würde funktionieren wenn die Berechtigungen stimmen. Die
/etc/boinc-client/global_prefs_override.xml Datei speziell und das Verzeichnis gehört aber
root. Natürlich kann man auch per Schlüssel auf den
root account. Dafür möchte aber meist der
SSH-Daemon aber gesondert aufgefordert werden (
/etc/ssh/sshd_config) und der Sicherheitsexperte runzelt die Stirn.
Und abschliessend: Es gibt wahrscheinlich noch einige andere Möglichkeiten. Ich hoffe das hier hilft vielleicht ein klein wenig.