Mounten Sie Virtualbox-Laufwerke

Eigene oder Gemeinschaftsprojekte, Klassen, Module, Codeschnipsel, HowTos, ...
Antworten
Bonus
Foriker
Beiträge: 132
Registriert: Mo 18. Mär 2024, 14:38
Kontaktdaten:

Mounten Sie Virtualbox-Laufwerke

Beitrag von Bonus » Sa 14. Sep 2024, 20:21

Ein Programm zum Mounten von Virtualbox-Festplattenlaufwerken.

Listet alle VMs in Ihrer Virtualbox-Konfiguration auf.

Kann auch aus einer .vdi-Datei gemountet werden, die nicht in der Konfiguration enthalten ist.

Erstellen Sie benutzerdefinierte Skripte: Erstellen Sie Ihre eigenen Befehle, um Aufgaben auf ausgewählten/gemounteten/allen Festplatten auszuführen

genießen :)

Hauptfenster:
Untitled.png
Untitled.png (90.75 KiB) 605 mal betrachtet
Bearbeiten von Befehlen:
vbimCom.png
vbimCom.png (96.84 KiB) 605 mal betrachtet
Dateianhänge
vbox-mounter-1.2.3.tar.gz
(119.82 KiB) 79-mal heruntergeladen
Zuletzt geändert von Bonus am Mi 18. Sep 2024, 20:08, insgesamt 10-mal geändert.
Ich bin Engländer und verwende Google Übersetzer. (Das tut mir leid)

Crabman
Foriker
Beiträge: 199
Registriert: So 6. Jan 2019, 13:31
Kontaktdaten:

Re: Mounten Sie Virtualbox-Laufwerke

Beitrag von Crabman » So 15. Sep 2024, 14:55

Hi
Danke für das interessante Projekt. Bei mir gabe es bisher folgende Probleme:

1. Programmabbruch bei allen Val(..)-Kommandos
Das Problem konnte schnell durch das Austauschen von Val(..) gegen CStr(..) behoben werden (wir verwenden in Deutschland das Komma zum Separieren der Dezimalen).

2. Programabbruch durch Parser
Das Programm brach ab, weil der Parser in GetBoxes() meine Kali VBox-Appliance nicht richtig verarbeitete. Das lag an der abweichenden Struktur des Info-Blocks dieser VM:
-----------------------------------------------------------------
VM Name: "Kali-Linux-2022.2-virtualbox-amd64"
UUID: 98aefc3c-c537-4093-bb5c-b9baa1c72df9
Desc: Kali Rolling (2022.2) x64
2022-05-12

- - - - - - - - - - - - - - - - - -

Username: kali
Password: kali
(US keyboard layout)

- - - - - - - - - - - - - - - - - -

* Kali Homepage:
https://www.kali.org/

* Documentation:
https://www.kali.org/docs/

* Kali Tools:
https://www.kali.org/tools/

* Forum/Community Support:
https://forums.kali.org/

* IRC Channel:
ircs://irc.oftc.net:6697/#Kali-Linux
https://www.kali.org/docs/community/kal ... c-channel/
Path: /home/user/VirtualBox VMs/Kali-Linux-2022.2-virtualbox-amd64/Kali-Linux-2022.2-virtualbox-amd64.vbox

Image: Kali-Linux-2022.2-virtualbox-amd64-disk001.vdi
UUID: b29eab3e-62e4-4b89-9230-d0e4f35a5d3f
Path: /home/user/VirtualBox VMs/Kali-Linux-2022.2-virtualbox-amd64/Kali-Linux-2022.2-virtualbox-amd64-disk001.vdi
Format: vdi
Size: 12.4G
State: created
Type: normal

Nachdem ich den Parser wie folgt geändert hatte:

Code: Alles auswählen

Public Sub GetBoxes()
  Dim hVM As VBoxUnit
  Dim sTmp As String
  Dim aVbox As String[]
  Dim aMounts As String[] = FMain.GetOtherMounts()
  Dim s As String
  Dim i As Integer

  $aVMS = New VBoxUnit[]

  'Dim d As Date = Now
  '  Shell "vboximg-mount -lv" Wait To sRes
  sTmp = Temp("vms")
  Shell "vboximg-mount -lv >" & sTmp Wait
  $sVMText = File.Load(sTmp)
  Try Kill sTmp
  'Debug DateDiff(d, Now, gb.Millisecond)

  aVBox = Split($sVMText, "\n")
  Print aVBox.max

  Do Until i = aVBox.max
     Inc i
     s = aVBox[i]
     'Print "s: "; s
     If InStr(s, "VM Name:") Then 
        hVM = New VBoxUnit As "VBUNIT"
        hVM.Name = UnQuote(GetLine(s))
     Else          
       If InStr(s, "UUID:") Then  
         hVM.UUID = GetLine(s)
       Else If InStr(s, "  Path:") Then
         hVM.Path = GetLine(s)
       Else If InStr(s, "Image:") Then
         hVM.ImageName = GetLine(s)
       Else If InStr(s, "ImageUUID:") Then
         hVM.ImageUUID = GetLine(s)        
       Else If InStr(s, "  UUID:") Then
         hVM.ImageUUID = GetLine(s)
       Else If InStr(s, "Path:") Then
         hVM.ImagePath = GetLine(s)
       Else If InStr(s, "  Format:") Then
         hVM.ImageFormat = GetLine(s)
       Else If InStr(s, "  Size:") Then
         hVM.ImageSize = GetLine(s)        
       Else If InStr(s, "  State:") Then
         hVM.ImageState = GetLine(s)       
       Else If InStr(s, "  Type:") Then
         hVM.ImageType = GetLine(s)     
         'hVM.Volumes = VBoxVDI.GetVolumes(hVM.ImagePath)
         $aVMS.Add(hVM)
         If aMounts.Exist(hVM.TmpDir & "/*", gb.Like) Then
           hVM.Mount(True)
         Endif
       Endif
     End If
   Loop

End
und auch diese Sub geändert hatte:

Code: Alles auswählen

Private Function GetLine(sLine As String) As String
  Dim sSplit As String[] 
  
  sSplit = Split(sLine, ":")
  Return Trim(sSplit[1])

End
wurden die VMs aufgelistet. Nachdem ich allerdings die auskommentierte Zeile

'hVM.Volumes = VBoxVDI.GetVolumes(hVM.ImagePath)

aktivierte, erhielt ich in der Zeile:

Code: Alles auswählen

Static Public Sub GetVolumes(Path As String) As VBoxVDI[]
   ...
   Error.Raise(Split(sRes, "\n\r", Null, True)[0])
   ...
die Fehlermeldung: "vboximg-mount: error: Could not get the storage format of the medium 'home/user .....vbox' (VERR_NOT_SUPPORTED)

Danach habe ich meine Versuche vorerst abgebrochen.

Viele Grüße
Crabman

Bonus
Foriker
Beiträge: 132
Registriert: Mo 18. Mär 2024, 14:38
Kontaktdaten:

Re: Mounten Sie Virtualbox-Laufwerke

Beitrag von Bonus » So 15. Sep 2024, 15:46

danke für den Bericht

Wow, ja, deine Kali-Informationen unterscheiden sich stark von allen anderen, die ich gefunden habe und die alle das gleiche Format hatten, daher der schlechte Code :(

Ich habe jetzt die Erkennungsmethode geändert, die hoffentlich nicht zu denselben Fehlern führen sollte.

Und diese beiden Val-Befehle in cStr geändert
Hmm, eigentlich denke ich, ich sollte CFloat und nicht CStr verwenden, da ich Float-Werte aus einem String auswerte

Lassen Sie mich wissen, wenn bei CFloat ein Fehler auftritt, danke :)
Es ist wahrscheinlich einfacher für mich, die Korrekturen vorzunehmen, da ich den Code besser kenne. Beispielsweise wurde die Zeile, die Sie auskommentiert haben, aus einem bestimmten Grund festgeschrieben, den ich nicht vergessen habe.

Aber ich schätze die Fehlerberichte sehr, vielen Dank nochmals :)

Ich habe auch die Option zum Starten der VM hinzugefügt :)

Ich habe das Archiv im ersten Beitrag aktualisiert.
Zuletzt geändert von Bonus am So 15. Sep 2024, 16:22, insgesamt 1-mal geändert.
Ich bin Engländer und verwende Google Übersetzer. (Das tut mir leid)

Crabman
Foriker
Beiträge: 199
Registriert: So 6. Jan 2019, 13:31
Kontaktdaten:

Re: Mounten Sie Virtualbox-Laufwerke

Beitrag von Crabman » So 15. Sep 2024, 16:11

Hi
Zwei Val > CStr - Ersetzungen fehlten noch:

Code: Alles auswählen

Public Sub _new(ID As Integer, Size As String, UUID As String)

  $iID = ID
  $sSizeString = Size
  $sUUID = UUID

  Dim f As Long
  Dim sChar As String = Right($sSizeString, 1)
  Dim sVal As String = Left($sSizeString, -1)
  If sChar = "M" Then
    'f = Val(sVal) * 1024 * 1024   '<-------------------------- 
    f = CStr(sVal) * 1024 * 1024
  Else If sChar = "G" Then
    'f = Val(sVal) * 1024 * 1024 * 1024  '<------------------------
    f = CStr(sVal) * 1024 * 1024 * 1024
  Endif
  ....
Danach konnte ich das Programm starten und die VMs wurden aufgelistet. Das Starten von VMs klappte nicht.
Die Änderung der Fuse-Parameter habe ich noch nicht vorgenommen. Das werde ich mir erst genauer durchlesen.

Viele Grüße
Crabman

Bonus
Foriker
Beiträge: 132
Registriert: Mo 18. Mär 2024, 14:38
Kontaktdaten:

Re: Mounten Sie Virtualbox-Laufwerke

Beitrag von Bonus » So 15. Sep 2024, 16:18

Ups, tut mir leid, dass du zu schnell für mich warst :D

Ja, ich habe zwei davon verpasst :-\

1.1.5 ist jetzt verfügbar

Kein einziges Val() irgendwo im Code :)
Ich bin Engländer und verwende Google Übersetzer. (Das tut mir leid)

Bonus
Foriker
Beiträge: 132
Registriert: Mo 18. Mär 2024, 14:38
Kontaktdaten:

Re: Mounten Sie Virtualbox-Laufwerke

Beitrag von Bonus » So 15. Sep 2024, 16:28

Hoppla, die Schaltfläche zum Starten der Vm funktioniert nicht, weil ich vergessen habe, mnuRun als Gruppe hinzuzufügen.

Das Menü funktioniert einwandfrei und ich habe gerade 1.1.5 mit dem Fix überschrieben. Entschuldigung :-\
Ich bin Engländer und verwende Google Übersetzer. (Das tut mir leid)

Crabman
Foriker
Beiträge: 199
Registriert: So 6. Jan 2019, 13:31
Kontaktdaten:

Re: Mounten Sie Virtualbox-Laufwerke

Beitrag von Crabman » So 15. Sep 2024, 16:41

Hi
Das Mounten, Un-Mounten und Starten der VMs klappt super.

Vielen Dank! Das kann ich gut gebrauchen.

Viele Grüße!
Crabman

Bonus
Foriker
Beiträge: 132
Registriert: Mo 18. Mär 2024, 14:38
Kontaktdaten:

Re: Mounten Sie Virtualbox-Laufwerke

Beitrag von Bonus » So 15. Sep 2024, 16:46

Gerne geschehen. :) :)

Ich denke, dass ich das auch oft nutzen werde.
Das Testen meiner Programme auf VMs mit bestimmten Gambas-Versionen wird viel einfacher sein, da ich jetzt erkennen kann, welche Version sich wo befindet :)

Wir danken auch Benoit dafür, dass er das alles möglich gemacht hat :)
Ich bin Engländer und verwende Google Übersetzer. (Das tut mir leid)

Bonus
Foriker
Beiträge: 132
Registriert: Mo 18. Mär 2024, 14:38
Kontaktdaten:

Re: Mounten Sie Virtualbox-Laufwerke

Beitrag von Bonus » Mo 16. Sep 2024, 12:25

Ein paar Updates...

Beim Starten einer VM können nun einige Optionen eingestellt werden.

Stellen Sie den Bildschirmmodus ein: Normal, Nahtlos, Skaliert, Vollbild

Die Wiederherstellung vom aktuellen Snapshot ist jetzt standardmäßig aktiviert.

Außerdem habe ich Übersetzungen aktiviert und den gesamten Quellcode nach Zeichenfolgen durchsucht, die hinzugefügt werden sollten. Es gibt maximal etwa 78 (einige benötigen möglicherweise keine Übersetzung)

Version 1.2.0 zum ersten Beitrag hochgeladen.
8-)
Zuletzt geändert von Bonus am Mo 16. Sep 2024, 18:45, insgesamt 1-mal geändert.
Ich bin Engländer und verwende Google Übersetzer. (Das tut mir leid)

Bonus
Foriker
Beiträge: 132
Registriert: Mo 18. Mär 2024, 14:38
Kontaktdaten:

Re: Mounten Sie Virtualbox-Laufwerke

Beitrag von Bonus » Mo 16. Sep 2024, 15:03

Ich habe versucht, die automatische Übersetzungsfunktion von Gambas zu verwenden und habe die Übersetzung für Sie erledigt :)
Ich habe Deutsch, Französisch, Italienisch und Spanisch hinzugefügt.
Bitte lassen Sie mich wissen, wenn etwas nicht stimmt.

V 1.2.1
Ich bin Engländer und verwende Google Übersetzer. (Das tut mir leid)

Crabman
Foriker
Beiträge: 199
Registriert: So 6. Jan 2019, 13:31
Kontaktdaten:

Re: Mounten Sie Virtualbox-Laufwerke

Beitrag von Crabman » Mo 16. Sep 2024, 18:58

Hi
Da die automatischen Übersetzungen in vielen Fällen nicht passten, habe ich sie überarbeitet. Anbei die de-Sprachdateien.

Achtung: Die Breite des Button "btnMount" wird im Programm modifiziert, sodass die deutsche Übersetzung abgeschnitten wird. Ich habe deshalb noch diese Zeile geändert, damit sich der Button auch an Übersetzungen anpasst:

btnMount.Width = btnMount.Font.TextWidth((" Browse ")) + (Desktop.Scale * 2)

Viele Grüße
Crabman
Dateianhänge
de.tar.gz
(5.09 KiB) 47-mal heruntergeladen

Bonus
Foriker
Beiträge: 132
Registriert: Mo 18. Mär 2024, 14:38
Kontaktdaten:

Re: Mounten Sie Virtualbox-Laufwerke

Beitrag von Bonus » Mo 16. Sep 2024, 19:36

Ausgezeichnet, CrabMan, vielen Dank.

Ich habe den Code zum Ändern der Größe des Mount-Buttons entfernt, ich weiß nicht einmal, warum ich das getan habe :D

Ich habe V1.2.2 mit den neuen Übersetzungen in den ersten Beitrag hochgeladen und Ihnen in der Readme.md-Datei gedankt :)

nochmals vielen Dank :)
Ich bin Engländer und verwende Google Übersetzer. (Das tut mir leid)

Bonus
Foriker
Beiträge: 132
Registriert: Mo 18. Mär 2024, 14:38
Kontaktdaten:

Re: Mounten Sie Virtualbox-Laufwerke

Beitrag von Bonus » Mi 18. Sep 2024, 20:10

Es kam mir albern vor, bei jedem Programmstart meinen Gambas-Versionsbefehl ausführen zu müssen.

Also gibt es jetzt etwas namens StoreData. Wenn ein Befehl ausgeführt wird, kann seine Ausgabe zur StoreData-Sammlung einer VM hinzugefügt werden.

Alle zu speichernden Befehlsausgaben werden in eine Datei mit VM-Namen geschrieben, die dann zum Lesen verfügbar ist.

Wenn Sie auf eine VM klicken, werden deren StoredData im Datenfenster angezeigt.

Standardmäßig werden die Daten in Temp() gespeichert und beim Neustart gelöscht, aber es gibt eine Menüoption, die Sie sich merken müssen (speichert stattdessen in $HOME/.config/vbox-mounter).

Im Befehlseditor gibt es einige neue Optionen (Kontrollkästchen) für einzelne Befehle.

Ergebnis speichern: Die Ausgabe speichert die StoredData der VM.
Kein Unmounten: Unmounten Sie kein Laufwerk, wenn es zum Ausführen des Befehls automatisch gemountet wurde.
Ruhig: Drucken Sie die Ausgabe nicht in das Statusfenster.

Weitere visuelle Verbesserungen.
Jetzt wird neben dem VM-Namen ein Kamerasymbol angezeigt, wenn ein Snapshot vorhanden ist.
Jetzt wird neben dem VM-Namen ein Infosymbol angezeigt, wenn gespeicherte Daten vorhanden sind.

Weitere visuelle Anpassungen.
Datenbereich und/oder Statusbereich ein- oder ausblenden
Wählen Sie aus, welche Felder im Datenbereich angezeigt werden sollen.

Habe eine Readme.md erstellt, fast Anweisungen :)

V 1.2.3 im ersten Beitrag :)
Dateianhänge
vbim.png
vbim.png (80.21 KiB) 461 mal betrachtet
Ich bin Engländer und verwende Google Übersetzer. (Das tut mir leid)

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste