fix agent for macos #3

Merged
nserrano merged 4 commits from ogagent-macos into py3-win 2024-07-22 15:36:15 +02:00
Collaborator

Historia de usuario: https://ognproject.evlt.uma.es/redmine/issues/337

paso 1: crear paquete de ogagent para macos

$ git clone https://github.com/hogliux/bomutils nati/hogliux-bomutils
$ cd nati/hogliux-bomutils
$ make all
$ ln -s $PWD/build/bin/mkbom ~/bin/
$ cd ..
$ git clone https://github.com/mackyle/xar nati/mackyle-xar
$ cd nati/mackyle-xar/xar
$ sed -i -e 's/OpenSSL_add_all_ciphers/OPENSSL_init_crypto/' configure.ac
$ ./autogen.sh
$ ./configure     ## hace falta? lo hace el autogen?
$ make
$ ln -s $PWD/src/xar ~/bin/
$ cd ..
$ src/update.py
$ macos/build-pkg.sh

paso 2: instalar macos

$ sudo apt-get install qemu-system-x86 qemu-utils dmg2img
$ git clone https://github.com/kholia/OSX-KVM
$ cd OSX-KVM

Usando un navegador, ir a https://mrmacintosh.com/macos-ventura-13-full-installer-database-download-directly-from-apple/ y bajarse el "Ventura installer" (InstallAssistant.pkg). Colocar el InstallAssistant.pkg en el directorio OSX-KVM.

$ mkisofs -quiet -allow-limited-size -l -J -r -iso-level 3 -V InstallAssistant -o InstallAssistant.iso InstallAssistant.pkg scripts/run_offline.sh
$ ./fetch-macOS-v2.py

Aquí aparece un menú. Escoger "6. Ventura (13) RECOMMENDED".

$ dmg2img -i BaseSystem.dmg BaseSystem.img
$ qemu-img create -f qcow2 mac_hdd_ng.img 35G

Editar OpenCore-Boot.sh y asegurarse de que tiene estas líneas:

  -drive id=MacDVD,if=none,file="$REPO_PATH/InstallAssistant.iso",format=raw
  -device ide-hd,bus=sata.5,drive=MacDVD

A mí no me funcionaba el ratón, lo solucioné descomentando estas:

  -device usb-kbd,bus=ehci.0
  -device usb-mouse,bus=ehci.0

Y luego donde "-netdev user", asegurarse de tener hostfwd=tcp::60022-:22,hostfwd=tcp::60059-:5900,hostfwd=tcp::60080-:8000.

Por último, comentar -monitor stdio.

En resumen, si hago git diff me sale:

--- a/OpenCore-Boot.sh
+++ b/OpenCore-Boot.sh
@@ -39,8 +39,8 @@ args=(
   -device usb-kbd,bus=xhci.0 -device usb-tablet,bus=xhci.0
   -smp "$CPU_THREADS",cores="$CPU_CORES",sockets="$CPU_SOCKETS"
   -device usb-ehci,id=ehci
-  # -device usb-kbd,bus=ehci.0
-  # -device usb-mouse,bus=ehci.0
+  -device usb-kbd,bus=ehci.0
+  -device usb-mouse,bus=ehci.0
   # -device nec-usb-xhci,id=xhci
   # -global nec-usb-xhci.msi=off
   # -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
@@ -59,11 +59,13 @@ args=(
   -drive id=MacHDD,if=none,file="$REPO_PATH/mac_hdd_ng.img",format=qcow2
   -device ide-hd,bus=sata.4,drive=MacHDD
   # -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27
-  -netdev user,id=net0,hostfwd=tcp::2222-:22 -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27
+  -netdev user,id=net0,hostfwd=tcp::60022-:22,hostfwd=tcp::60059-:5900,hostfwd=tcp::60080-:8000 -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27
   # -netdev user,id=net0 -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27  # Note: Use this line for High Sierra
-  -monitor stdio
+  # -monitor stdio
   -device vmware-svga
   # -spice port=5900,addr=127.0.0.1,disable-ticketing=on
+  -drive id=MacDVD,if=none,file="$REPO_PATH/InstallAssistant.iso",format=raw
+  -device ide-hd,bus=sata.5,drive=MacDVD
 )
 
 qemu-system-x86_64 "${args[@]}"

Lanzar el script y conectarse por VNC (este es el VNC de qemu): ./OpenCore-Boot.sh & sleep 1; xtigervncviewer localhost::5900.

  • Con el teclado seleccionar "macOS base system" y pulsar enter.
  • Ir a Disk Utility > Continue.
  • Pinchar en el disco de 35 Gb (hay que tantear para encontrarlo) > Erase > Ponerle de nombre "macos" > Erase > Done.
  • Cerrar Disk Utility.
  • Utilities > Terminal.
  • Ejecutar sh /Volumes/InstallAssistant/run_offline.sh.
  • Después de unos ~30 minutos vuelve al boot loader y ahora hay un disco "macos installer", darle.
  • Después de un rato vuelve al boot loader. Darle al disco "macos". Si no está, volver a darle a "macos installer".
  • Idem.
  • Seguir el wizard de instalación.

Si la instalación peta, hacer limpieza (git reset --hard) y volver a empezar ¯\_(ツ)_/¯ (o hacer una limpieza menos agresiva, esto ya queda como ejercicio para el lector)

Una vez macos está instalado, ir a Settings > General > Sharing > Screen sharing. Esta es la configuración de VNC (el de macos, no de qemu). Ponerle contraseña y que todo el mundo tenga todos los permisos. Activarlo.

Ir a Settings > General > Sharing > Remote login. Esta es la configuración de SSH, darle permisos y activarlo.

Salir del VNC de qemu, entrar al de macos: xtigervncviewer localhost::60059.

Poner esto en el ~/.ssh/config para poder hacer ssh fácilmente al macos:

Host og-ventura
    Hostname 127.0.0.1
    User nati
    Port 60022 

paso 3: instalar python y dependencias

De algún sitio bajarse Homebrew-4.2.20.pkg.

En el portátil, subir homebrew y ogagent al macos: scp Homebrew-4.2.20.pkg OGAgentInstaller-1.3.2.pkg og-ventura:Downloads/.

En macos:

% chsh -s /bin/bash
% exec bash
$ xcode-select --install
$ echo nati |sudo --stdin installer -verbose -pkg Downloads/Homebrew-4.2.20.pkg -target /Applications
$ /usr/local/bin/brew shellenv >>.bashrc
$ exec bash
$ env |grep BREW      ## deben aparecer cosas
$ brew install python pyqt six iproute2mac
$ /usr/local/bin/pip3 install --break-system-packages requests

paso 4: instalar y configurar el agente

Instalar agente, configurar IP, arreglar un permiso (desgraciadamente, el fix en el repo está en otra rama y no en esta):

$ echo nati |sudo --stdin installer -pkg Downloads/OGAgentInstaller-1.3.2.pkg -target /Applications
$ sudo sed -i -e '/^remote/s/192.168.2.10/192.168.1.249/' /Applications/OGAgent.app/cfg/ogagent.cfg
$ sudo chmod 0755 /Applications/OGAgent.app/OGAgentUser.py

paso 5: emular ogserver

Igual que para windows y linux, en el portátil:

$ sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://192.168.1.249:443")'

paso 6: levantar agente

La forma más fácil, y además así también sirve como prueba, es simplemente reiniciar macos.

Todavía no iniciar sesión. Esperar a que en el log del "ogserver" aparezca una petición a opengnsys/rest/ogagent/started.

Iniciar sesión. En el log del "ogserver" debería aparecer una petición a opengnsys/rest/ogagent/loggedin. El icono de OG debería estar visible cerca del reloj.

paso 7: consultar status

En el portátil:

$ curl --insecure https://localhost:60080/opengnsys/status
{"status": "OSX", "loggedin": true, "session": "unknown"}

paso 8: limpieza

  • apagar macos
  • rm -rf OSX-KVM
  • rm ~/bin/xar ~/bin/mkbom
Historia de usuario: https://ognproject.evlt.uma.es/redmine/issues/337 ## paso 1: crear paquete de ogagent para macos ``` $ git clone https://github.com/hogliux/bomutils nati/hogliux-bomutils $ cd nati/hogliux-bomutils $ make all $ ln -s $PWD/build/bin/mkbom ~/bin/ $ cd .. ``` ``` $ git clone https://github.com/mackyle/xar nati/mackyle-xar $ cd nati/mackyle-xar/xar $ sed -i -e 's/OpenSSL_add_all_ciphers/OPENSSL_init_crypto/' configure.ac $ ./autogen.sh $ ./configure ## hace falta? lo hace el autogen? $ make $ ln -s $PWD/src/xar ~/bin/ $ cd .. ``` ``` $ src/update.py $ macos/build-pkg.sh ``` ## paso 2: instalar macos ``` $ sudo apt-get install qemu-system-x86 qemu-utils dmg2img $ git clone https://github.com/kholia/OSX-KVM $ cd OSX-KVM ``` Usando un navegador, ir a https://mrmacintosh.com/macos-ventura-13-full-installer-database-download-directly-from-apple/ y bajarse el "Ventura installer" (InstallAssistant.pkg). Colocar el InstallAssistant.pkg en el directorio OSX-KVM. ``` $ mkisofs -quiet -allow-limited-size -l -J -r -iso-level 3 -V InstallAssistant -o InstallAssistant.iso InstallAssistant.pkg scripts/run_offline.sh $ ./fetch-macOS-v2.py ``` Aquí aparece un menú. Escoger "6. Ventura (13) RECOMMENDED". ``` $ dmg2img -i BaseSystem.dmg BaseSystem.img $ qemu-img create -f qcow2 mac_hdd_ng.img 35G ``` Editar OpenCore-Boot.sh y asegurarse de que tiene estas líneas: ``` -drive id=MacDVD,if=none,file="$REPO_PATH/InstallAssistant.iso",format=raw -device ide-hd,bus=sata.5,drive=MacDVD ``` A mí no me funcionaba el ratón, lo solucioné descomentando estas: ``` -device usb-kbd,bus=ehci.0 -device usb-mouse,bus=ehci.0 ``` Y luego donde "-netdev user", asegurarse de tener `hostfwd=tcp::60022-:22,hostfwd=tcp::60059-:5900,hostfwd=tcp::60080-:8000`. Por último, comentar `-monitor stdio`. En resumen, si hago `git diff` me sale: ``` --- a/OpenCore-Boot.sh +++ b/OpenCore-Boot.sh @@ -39,8 +39,8 @@ args=( -device usb-kbd,bus=xhci.0 -device usb-tablet,bus=xhci.0 -smp "$CPU_THREADS",cores="$CPU_CORES",sockets="$CPU_SOCKETS" -device usb-ehci,id=ehci - # -device usb-kbd,bus=ehci.0 - # -device usb-mouse,bus=ehci.0 + -device usb-kbd,bus=ehci.0 + -device usb-mouse,bus=ehci.0 # -device nec-usb-xhci,id=xhci # -global nec-usb-xhci.msi=off # -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off @@ -59,11 +59,13 @@ args=( -drive id=MacHDD,if=none,file="$REPO_PATH/mac_hdd_ng.img",format=qcow2 -device ide-hd,bus=sata.4,drive=MacHDD # -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27 - -netdev user,id=net0,hostfwd=tcp::2222-:22 -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27 + -netdev user,id=net0,hostfwd=tcp::60022-:22,hostfwd=tcp::60059-:5900,hostfwd=tcp::60080-:8000 -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27 # -netdev user,id=net0 -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27 # Note: Use this line for High Sierra - -monitor stdio + # -monitor stdio -device vmware-svga # -spice port=5900,addr=127.0.0.1,disable-ticketing=on + -drive id=MacDVD,if=none,file="$REPO_PATH/InstallAssistant.iso",format=raw + -device ide-hd,bus=sata.5,drive=MacDVD ) qemu-system-x86_64 "${args[@]}" ``` Lanzar el script y conectarse por VNC (este es el VNC de qemu): `./OpenCore-Boot.sh & sleep 1; xtigervncviewer localhost::5900`. * Con el teclado seleccionar "macOS base system" y pulsar enter. * Ir a Disk Utility > Continue. * Pinchar en el disco de 35 Gb (hay que tantear para encontrarlo) > Erase > Ponerle de nombre "macos" > Erase > Done. * Cerrar Disk Utility. * Utilities > Terminal. * Ejecutar `sh /Volumes/InstallAssistant/run_offline.sh`. * Después de unos ~30 minutos vuelve al boot loader y ahora hay un disco "macos installer", darle. * Después de un rato vuelve al boot loader. Darle al disco "macos". Si no está, volver a darle a "macos installer". * Idem. * Seguir el wizard de instalación. Si la instalación peta, hacer limpieza (`git reset --hard`) y volver a empezar `¯\_(ツ)_/¯` (o hacer una limpieza menos agresiva, esto ya queda como ejercicio para el lector) Una vez macos está instalado, ir a Settings > General > Sharing > Screen sharing. Esta es la configuración de VNC (el de macos, no de qemu). Ponerle contraseña y que todo el mundo tenga todos los permisos. Activarlo. Ir a Settings > General > Sharing > Remote login. Esta es la configuración de SSH, darle permisos y activarlo. Salir del VNC de qemu, entrar al de macos: `xtigervncviewer localhost::60059`. Poner esto en el ~/.ssh/config para poder hacer ssh fácilmente al macos: ``` Host og-ventura Hostname 127.0.0.1 User nati Port 60022 ``` ## paso 3: instalar python y dependencias De algún sitio bajarse Homebrew-4.2.20.pkg. En el portátil, subir homebrew y ogagent al macos: `scp Homebrew-4.2.20.pkg OGAgentInstaller-1.3.2.pkg og-ventura:Downloads/`. En macos: ``` % chsh -s /bin/bash % exec bash $ xcode-select --install $ echo nati |sudo --stdin installer -verbose -pkg Downloads/Homebrew-4.2.20.pkg -target /Applications $ /usr/local/bin/brew shellenv >>.bashrc $ exec bash $ env |grep BREW ## deben aparecer cosas $ brew install python pyqt six iproute2mac $ /usr/local/bin/pip3 install --break-system-packages requests ``` ## paso 4: instalar y configurar el agente Instalar agente, configurar IP, arreglar un permiso (desgraciadamente, el fix en el repo está en otra rama y no en esta): ``` $ echo nati |sudo --stdin installer -pkg Downloads/OGAgentInstaller-1.3.2.pkg -target /Applications $ sudo sed -i -e '/^remote/s/192.168.2.10/192.168.1.249/' /Applications/OGAgent.app/cfg/ogagent.cfg $ sudo chmod 0755 /Applications/OGAgent.app/OGAgentUser.py ``` ## paso 5: emular ogserver Igual que para windows y linux, en el portátil: ``` $ sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://192.168.1.249:443")' ``` ## paso 6: levantar agente La forma más fácil, y además así también sirve como prueba, es simplemente reiniciar macos. Todavía no iniciar sesión. Esperar a que en el log del "ogserver" aparezca una petición a `opengnsys/rest/ogagent/started`. Iniciar sesión. En el log del "ogserver" debería aparecer una petición a `opengnsys/rest/ogagent/loggedin`. El icono de OG debería estar visible cerca del reloj. ## paso 7: consultar status En el portátil: ``` $ curl --insecure https://localhost:60080/opengnsys/status {"status": "OSX", "loggedin": true, "session": "unknown"} ``` ## paso 8: limpieza * apagar macos * `rm -rf OSX-KVM` * `rm ~/bin/xar ~/bin/mkbom`
nserrano added 1 commit 2024-07-03 14:45:42 +02:00
nserrano requested review from arantuna 2024-07-12 17:44:27 +02:00
nserrano changed title from WIP: fix agent for macos to fix agent for macos 2024-07-12 19:03:18 +02:00
Collaborator

En mi portátil

Respecto a la pregunta:
$./configure ## hace falta? lo hace el autogen?
Respuesta: No hace falta, sí, ya lo hace el autogen

Eso sí, he tenido que instalar algunas dependencias:
make, gcc, python, g++, autoconf, libxmi2-dev, libssl-deb, libcrypto++-dev, zliblg-dev

El paquete se construye, aparentemente bien, OGAgentInstaller-1.3.2.pkg

Posteriormente en el portátil, para ejecutar la línea de perl que lanza un "API de prueba ogServer para test"

He tenido que instalar varias dependencias de cpan:

sudo apt-get install cpanminus
sudo cpanm DateTime ojo

Dado que el perl se ejecuta con la IP del portátil y el puerto 443:
sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://10.80.23.229:443")'

La consulta en el portátil, ¿debe ser con la IP donde se está ejecutando el Perl? Así al menos veo movimiento:
curl --insecure https://10.80.23.229:443/opengnsys/status

En MacOS (Ventura)
Al instalar "brew" he tenido que ejecutar esto para continuar con los pasos siguientes:
brew link --overwrite python@3.12

¿Falta el paso que indique cómo cambiar la configuración del ogAgent para que sepa cuál es el server?

vi /Applications/OGAgent.app/cfg/ogagent.cfg
remote=https://10.80.23.229/opengnsys/rest

El paquete se instala, aparentemente OK, no da errores.

No obstante, aunque el agente se está ejecutando, NO se ve actividad en el perl de "prueba", y tampoco el Icono al lado del reloj.

arantunas-iMac-Pro:~ arantuna$ ps aux |grep -i ogag
root               317   1,2  0,2 34163704   9900   ??  S     7:56PM   0:05.93 /usr/local/Cellar/python@3.12/3.12.4/Frameworks/Python.framework/Versions/3.12/Resources/Python.app/Contents/MacOS/Python -m opengnsys.linux.OGAgentService start

No sé si me falta algo, o me he saltado algún paso...

**En mi portátil** Respecto a la pregunta: `$./configure ## hace falta? lo hace el autogen?` Respuesta: No hace falta, sí, ya lo hace el autogen Eso sí, he tenido que instalar algunas dependencias: `make, gcc, python, g++, autoconf, libxmi2-dev, libssl-deb, libcrypto++-dev, zliblg-dev` El paquete se construye, aparentemente bien, OGAgentInstaller-1.3.2.pkg Posteriormente en el portátil, para ejecutar la línea de perl que lanza un "API de prueba ogServer para test" He tenido que instalar varias dependencias de cpan: ``` sudo apt-get install cpanminus sudo cpanm DateTime ojo ``` Dado que el perl se ejecuta con la IP del portátil y el puerto 443: `sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://10.80.23.229:443")'` La consulta en el portátil, ¿debe ser con la IP donde se está ejecutando el Perl? Así al menos veo movimiento: `curl --insecure https://10.80.23.229:443/opengnsys/status` **En MacOS** (Ventura) Al instalar "brew" he tenido que ejecutar esto para continuar con los pasos siguientes: `brew link --overwrite python@3.12` ¿Falta el paso que indique cómo cambiar la configuración del ogAgent para que sepa cuál es el server? ``` vi /Applications/OGAgent.app/cfg/ogagent.cfg remote=https://10.80.23.229/opengnsys/rest ``` El paquete se instala, aparentemente OK, no da errores. No obstante, aunque el agente se está ejecutando, NO se ve actividad en el perl de "prueba", y tampoco el Icono al lado del reloj. ``` arantunas-iMac-Pro:~ arantuna$ ps aux |grep -i ogag root 317 1,2 0,2 34163704 9900 ?? S 7:56PM 0:05.93 /usr/local/Cellar/python@3.12/3.12.4/Frameworks/Python.framework/Versions/3.12/Resources/Python.app/Contents/MacOS/Python -m opengnsys.linux.OGAgentService start ``` No sé si me falta algo, o me he saltado algún paso...
Collaborator

Adjunto el pkg que he generado siguiendo los pasos.

Adjunto el pkg que he generado siguiendo los pasos.
Poster
Collaborator

La consulta a /status (curl --insecure https://10.80.23.229:443/opengnsys/status) debe ser a la IP del mac.

En mi setup tengo un qemu -netdev user,id=net0,[...],hostfwd=tcp::60080-:8000 (se ve en el diff del paso 2). Esto significa que el qemu escucha en localhost:60080 y las conexiones entrantes las reenvía al macos:8000. Entonces yo el curl lo tiro contra localhost:60080 y así llego al agente. En lo que hayas montado tú puede ser similar o puede no serlo 😇

La IP que se pone en el perl -Mojo es la de tu portátil, y es la misma que hay que poner en el ogagent.cfg. Y sí, olvidé indicar ese paso porque en mi repo de git ya tenía el cambio hecho y se me pasó del todo.

Verifica que tienes conectividad en ambos sentidos (de afuera al macos:8000 y del macos a fuera:443).

El icono... pues... voy a meter tu .pkg en mi macos a ver qué pasa.

La consulta a /status (`curl --insecure https://10.80.23.229:443/opengnsys/status`) debe ser a la IP del mac. En mi setup tengo un `qemu -netdev user,id=net0,[...],hostfwd=tcp::60080-:8000` (se ve en el diff del paso 2). Esto significa que el qemu escucha en localhost:60080 y las conexiones entrantes las reenvía al macos:8000. Entonces yo el curl lo tiro contra localhost:60080 y así llego al agente. En lo que hayas montado tú puede ser similar o puede no serlo 😇 La IP que se pone en el `perl -Mojo` es la de tu portátil, y es la misma que hay que poner en el ogagent.cfg. Y sí, olvidé indicar ese paso porque en mi repo de git ya tenía el cambio hecho y se me pasó del todo. Verifica que tienes conectividad en ambos sentidos (de afuera al macos:8000 y del macos a fuera:443). El icono... pues... voy a meter tu .pkg en mi macos a ver qué pasa.
Poster
Collaborator

For reference:

sudo sed -i -e '/^remote/s/192.168.2.10/192.168.1.249/' /Applications/OGAgent.app/cfg/ogagent.cfg
For reference: ``` sudo sed -i -e '/^remote/s/192.168.2.10/192.168.1.249/' /Applications/OGAgent.app/cfg/ogagent.cfg ```
Poster
Collaborator

También falta este paso:

sudo chmod 0755 /Applications/OGAgent.app/OGAgentUser.py

Lo vimos en la demo, pero no está mencionado en el OP.

También falta este paso: ``` sudo chmod 0755 /Applications/OGAgent.app/OGAgentUser.py ``` Lo vimos en la demo, pero no está mencionado en el OP.
Poster
Collaborator

también faltaba un src/update.py 🤦

Resumen

  • en el paso 1, añadí src/update.py, que hay que ejecutar antes del build-pkg.
  • en el paso 3 instalábamos python y todo, y al final instalábamos el agente. Ahora el paso 3 solo trata de dependencias
  • en el (nuevo) paso 4, instalamos el agente, lo configuramos y arreglamos un tema de permisos
  • los pasos 5 en adelante están renumerados, porque ahora hay un nuevo paso 4

Si sigue sin salir el icono de OG, la forma de depurar es:

natis-iMac-Pro:~ nati$ cd /Applications/OGAgent.app/
natis-iMac-Pro:OGAgent.app nati$ ./OGAgentUser.py
Traceback (most recent call last):
  File "/Applications/OGAgent.app/./OGAgentUser.py", line 40, in <module>
    from about_dialog_ui import Ui_OGAAboutDialog
ModuleNotFoundError: No module named 'about_dialog_ui'

Así fue como supe que faltaba la parte del update.py.

Dale otra vuelta y me cuentas, sí? Perdona por los errores, esta PR no va tan fina como otras!

también faltaba un `src/update.py` 🤦 ### Resumen - en el paso 1, añadí `src/update.py`, que hay que ejecutar antes del build-pkg. - en el paso 3 instalábamos python y todo, y al final instalábamos el agente. Ahora el paso 3 solo trata de dependencias - en el (nuevo) paso 4, instalamos el agente, lo configuramos y arreglamos un tema de permisos - los pasos 5 en adelante están renumerados, porque ahora hay un nuevo paso 4 Si sigue sin salir el icono de OG, la forma de depurar es: ``` natis-iMac-Pro:~ nati$ cd /Applications/OGAgent.app/ natis-iMac-Pro:OGAgent.app nati$ ./OGAgentUser.py Traceback (most recent call last): File "/Applications/OGAgent.app/./OGAgentUser.py", line 40, in <module> from about_dialog_ui import Ui_OGAAboutDialog ModuleNotFoundError: No module named 'about_dialog_ui' ``` Así fue como supe que faltaba la parte del update.py. Dale otra vuelta y me cuentas, sí? Perdona por los errores, esta PR no va tan fina como otras!
Collaborator

He realizado el proceso nuevamente de creación del agente con

src/update.py

A continuación, una vez ejecutado, escucha en el puerto 8000 y obtengo la siguiente salida:

arantunas-iMac-Pro:~ arantuna$ curl --insecure https://localhost:8000/opengnsys/status
{"status": "OSX", "loggedin": false, "session": ""}

Cuando hago login, ya cambia la respuesta

arantunas-iMac-Pro:~ arantuna$ curl --insecure https://localhost:8000/opengnsys/status
{"status": "OSX", "loggedin": true, "session": "unknown"}

Se observa el icono en la barra superior.
Se observa un icono de python en la barra inferior

No obstante, en el server de prueba con perl Mojo, no recibo nada, a pesar de haber modificado el cfg del OGAgent

arantunas-iMac-Pro:cfg arantuna$ grep remote ogagent.cfg
remote=https://10.80.23.229/opengnsys/rest

Donde está escuchando el perl

sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://10.80.23.229:443")'
Web application available at https://10.80.23.229:443

Es probable que funcione correctamente, pero me faltaría confirmarlo con un ogserver.

Un saludo,

He realizado el proceso nuevamente de creación del agente con ``` src/update.py ``` A continuación, una vez ejecutado, escucha en el puerto 8000 y obtengo la siguiente salida: ``` arantunas-iMac-Pro:~ arantuna$ curl --insecure https://localhost:8000/opengnsys/status {"status": "OSX", "loggedin": false, "session": ""} ``` Cuando hago login, ya cambia la respuesta ``` arantunas-iMac-Pro:~ arantuna$ curl --insecure https://localhost:8000/opengnsys/status {"status": "OSX", "loggedin": true, "session": "unknown"} ``` Se observa el icono en la barra superior. Se observa un icono de python en la barra inferior No obstante, en el server de prueba con perl Mojo, no recibo nada, a pesar de haber modificado el cfg del OGAgent ``` arantunas-iMac-Pro:cfg arantuna$ grep remote ogagent.cfg remote=https://10.80.23.229/opengnsys/rest ``` Donde está escuchando el perl ``` sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://10.80.23.229:443")' Web application available at https://10.80.23.229:443 ``` Es probable que funcione correctamente, pero me faltaría confirmarlo con un ogserver. Un saludo,
Collaborator

Adjunto algunas capturas,

el icono de Python en el "dock" hace que se pueda cerrar el agente con facilidad. No debería estar ahí.

Adjunto algunas capturas, el icono de Python en el "dock" hace que se pueda cerrar el agente con facilidad. No debería estar ahí.
Poster
Collaborator

Si haces un curl desde el macos hacia el perl-mojo, ¿consigues algo?

Lo del cohete quedaría para otro ticket. Habría que ver si es viable que una aplicación de QT lanzada por el usuario (no por el sistema) no tuviera iconito ahí abajo.

Si haces un curl desde el macos hacia el perl-mojo, ¿consigues algo? Lo del cohete quedaría para otro ticket. Habría que ver si es viable que una aplicación de QT lanzada por el usuario (no por el sistema) no tuviera iconito ahí abajo.
nserrano added 2 commits 2024-07-19 10:45:21 +02:00

Adjunto el log de /var/log

/Users/angel/Downloads/opengnsys.log

Adjunto el log de /var/log /Users/angel/Downloads/opengnsys.log
Poster
Collaborator

WARNING 2024-07-16 19:52:22,879 Command "ip" failed with exit code 1

no hay comando ip. El postinst debería haberlo puesto en /usr/local/bin:

$ cat macos/scripts/postinstall
[…]
BINDIR=/usr/local/bin
cp $SRCDIR/ip.py $BINDIR/ip    ## override 'ip' from iproute2mac-1.4.2 with a more recent one

Mira en el /var/log/install.log a la hora a la que instalaste el paquete, a ver si salen errores de postinst.

En mis notas tengo esto por si decides reinstalar el paquete:

$ echo nati |sudo --stdin installer -pkg /Users/nati/Downloads/OGAgentInstaller-1.3.2.pkg -target /Applications
$ tail -n 77 /var/log/install.log
`WARNING 2024-07-16 19:52:22,879 Command "ip" failed with exit code 1` no hay comando `ip`. El postinst debería haberlo puesto en /usr/local/bin: ``` $ cat macos/scripts/postinstall […] BINDIR=/usr/local/bin cp $SRCDIR/ip.py $BINDIR/ip ## override 'ip' from iproute2mac-1.4.2 with a more recent one ``` Mira en el /var/log/install.log a la hora a la que instalaste el paquete, a ver si salen errores de postinst. En mis notas tengo esto por si decides reinstalar el paquete: ``` $ echo nati |sudo --stdin installer -pkg /Users/nati/Downloads/OGAgentInstaller-1.3.2.pkg -target /Applications $ tail -n 77 /var/log/install.log ```

Adjunto log install.log

La versión instalada de "ip" parece la correcta, aunque no se ejecuta bien

arantunas-iMac-Pro:~ arantuna$ grep -i version /usr/local/bin/ip 
  When doing 'brew install iproute2mac', we get an old version (1.4.2) that doesn't support 'ip -json'
  Therefore we make the decision of shipping this ip.py (version 1.5.0) along opengnsys, which is pretty much the same as curling it
# Version
VERSION = "1.5.0"
# Classful to CIDR conversion with "default" being passed through
        elif "-Version".startswith(argv[0]):
            print("iproute2mac, v" + VERSION)

Aquí la ejecución:

arantunas-iMac-Pro:~ arantuna$ ip -V
iproute2mac, v1.5.0
arantunas-iMac-Pro:~ arantuna$ ip -j route
[{"dst":"default","gateway":"10.80.23.1","dev":"en0","flags":[]},{"dst":"10.80.23.0/24","dev":"en0","scope":"link","flags":[]},{"dst":"10.80.23.1/32","dev":"en0","scope":"link","flags":[]},{"dst":"10.80.23.228/32","dev":"en0","scope":"link","flags":[]},{"dst":"127.0.0.0/8","gateway":"127.0.0.1","dev":"lo0","flags":[]},{"dst":"127.0.0.1/32","gateway":"127.0.0.1","dev":"lo0","flags":[]},{"dst":"169.254.0.0/16","dev":"en0","scope":"link","flags":[]},{"dst":"224.0.0.0/4","dev":"en0","scope":"link","flags":[]},{"dst":"255.255.255.255/32","dev":"en0","scope":"link","flags":[]}]
arantunas-iMac-Pro:~ arantuna$ ip -j addr
Traceback (most recent call last):
  File "/usr/local/bin/ip", line 832, in <module>
    main(sys.argv[1:])
  File "/usr/local/bin/ip", line 101, in inner
    if not func(*args, **kwargs):
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/bin/ip", line 825, in main
    return cmd_func(argv, af, json_print, pretty_json)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/bin/ip", line 101, in inner
    if not func(*args, **kwargs):
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/bin/ip", line 513, in do_addr
    return do_addr_show(argv, af, json_print, pretty_json)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/bin/ip", line 526, in do_addr_show
    return link_addr_show(argv, af, json_print, pretty_json, True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/bin/ip", line 216, in link_addr_show
    links = parse_ifconfig(res, af, address)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/bin/ip", line 179, in parse_ifconfig
    (local, prefixlen) = re.findall(r"inet6 ([0-9a-f:]*::[0-9a-f:]+)%*\w* prefixlen (\d+)", r)[0]
                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range
Adjunto log install.log La versión instalada de "ip" parece la correcta, aunque no se ejecuta bien ``` arantunas-iMac-Pro:~ arantuna$ grep -i version /usr/local/bin/ip When doing 'brew install iproute2mac', we get an old version (1.4.2) that doesn't support 'ip -json' Therefore we make the decision of shipping this ip.py (version 1.5.0) along opengnsys, which is pretty much the same as curling it # Version VERSION = "1.5.0" # Classful to CIDR conversion with "default" being passed through elif "-Version".startswith(argv[0]): print("iproute2mac, v" + VERSION) ``` Aquí la ejecución: ``` arantunas-iMac-Pro:~ arantuna$ ip -V iproute2mac, v1.5.0 arantunas-iMac-Pro:~ arantuna$ ip -j route [{"dst":"default","gateway":"10.80.23.1","dev":"en0","flags":[]},{"dst":"10.80.23.0/24","dev":"en0","scope":"link","flags":[]},{"dst":"10.80.23.1/32","dev":"en0","scope":"link","flags":[]},{"dst":"10.80.23.228/32","dev":"en0","scope":"link","flags":[]},{"dst":"127.0.0.0/8","gateway":"127.0.0.1","dev":"lo0","flags":[]},{"dst":"127.0.0.1/32","gateway":"127.0.0.1","dev":"lo0","flags":[]},{"dst":"169.254.0.0/16","dev":"en0","scope":"link","flags":[]},{"dst":"224.0.0.0/4","dev":"en0","scope":"link","flags":[]},{"dst":"255.255.255.255/32","dev":"en0","scope":"link","flags":[]}] arantunas-iMac-Pro:~ arantuna$ ip -j addr Traceback (most recent call last): File "/usr/local/bin/ip", line 832, in <module> main(sys.argv[1:]) File "/usr/local/bin/ip", line 101, in inner if not func(*args, **kwargs): ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/bin/ip", line 825, in main return cmd_func(argv, af, json_print, pretty_json) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/bin/ip", line 101, in inner if not func(*args, **kwargs): ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/bin/ip", line 513, in do_addr return do_addr_show(argv, af, json_print, pretty_json) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/bin/ip", line 526, in do_addr_show return link_addr_show(argv, af, json_print, pretty_json, True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/bin/ip", line 216, in link_addr_show links = parse_ifconfig(res, af, address) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/bin/ip", line 179, in parse_ifconfig (local, prefixlen) = re.findall(r"inet6 ([0-9a-f:]*::[0-9a-f:]+)%*\w* prefixlen (\d+)", r)[0] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^ IndexError: list index out of range ```
Poster
Collaborator

"That must be why we're not shipping windows 98 yet" https://www.youtube.com/watch?v=yeUyxjLhAxU

Parece que iproute2mac se atraganta con tus interfaces de red y por eso todavía no la han publicado. Lo que hace es llamar a ifconfig y parsear la salida. Parece que tienes algún interface que tiene "inet6" pero no tiene "inet6 ... prefixlen ...".

Si haces ifconfig |grep inet6 ¿qué te sale? A mí (en linux) esto:

        inet6 fe80::42:51ff:fe5f:3614  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::42:acff:fe88:4795  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::12b8:d304:caf6:5098  prefixlen 64  scopeid 0x20<link>
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        inet6 fe80::2cff:9bd7:d450:bf66  prefixlen 64  scopeid 0x20<link>
        inet6 201:e661:7:0:4f28:80db:deab:de74  prefixlen 7  scopeid 0x0<global>
        inet6 fe80::800:27ff:fe00:0  prefixlen 64  scopeid 0x20<link>
``
"That must be why we're not shipping windows 98 yet" https://www.youtube.com/watch?v=yeUyxjLhAxU Parece que iproute2mac se atraganta con tus interfaces de red y por eso todavía no la han publicado. Lo que hace es llamar a `ifconfig` y parsear la salida. Parece que tienes algún interface que tiene "inet6" pero no tiene "inet6 ... prefixlen ...". Si haces `ifconfig |grep inet6` ¿qué te sale? A mí (en linux) esto: ``` inet6 fe80::42:51ff:fe5f:3614 prefixlen 64 scopeid 0x20<link> inet6 fe80::42:acff:fe88:4795 prefixlen 64 scopeid 0x20<link> inet6 fe80::12b8:d304:caf6:5098 prefixlen 64 scopeid 0x20<link> inet6 ::1 prefixlen 128 scopeid 0x10<host> inet6 fe80::2cff:9bd7:d450:bf66 prefixlen 64 scopeid 0x20<link> inet6 201:e661:7:0:4f28:80db:deab:de74 prefixlen 7 scopeid 0x0<global> inet6 fe80::800:27ff:fe00:0 prefixlen 64 scopeid 0x20<link> ``

arantunas-iMac-Pro:~ arantuna$ ifconfig |grep inet6
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet6 fe80::181a:dc04:6edc:e753%en0 prefixlen 64 secured scopeid 0x4
inet6 fdac:9735:bca:bd45:4af:66fa:e91b:ff7f prefixlen 64 autoconf secured
inet6 fe80::85ac:c9aa:d15:2912%utun0 prefixlen 64 scopeid 0x5
inet6 fe80::73fe:9044:c4c1:6985%utun1 prefixlen 64 scopeid 0x6
inet6 fe80::ce81:b1c:bd2c:69e%utun2 prefixlen 64 scopeid 0x7

arantunas-iMac-Pro:~ arantuna$ ifconfig |grep inet6 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 inet6 fe80::181a:dc04:6edc:e753%en0 prefixlen 64 secured scopeid 0x4 inet6 fdac:9735:bca:bd45:4af:66fa:e91b:ff7f prefixlen 64 autoconf secured inet6 fe80::85ac:c9aa:d15:2912%utun0 prefixlen 64 scopeid 0x5 inet6 fe80::73fe:9044:c4c1:6985%utun1 prefixlen 64 scopeid 0x6 inet6 fe80::ce81:b1c:bd2c:69e%utun2 prefixlen 64 scopeid 0x7
nserrano added 1 commit 2024-07-19 14:11:23 +02:00
dc7c6af6e8 refs #474 fix regex to match ipv6 addresses
The former regex failed to match an IPv6 that didn't include "::", which are
obviously valid. Change the regex so they are caught.
Poster
Collaborator

La regex cuenta con que la IPv6 tenga al menos una ocurrencia de "::". Tienes una IPv6 perfectamente válida que no incluye "::" (fdac:9735:bca:bd45:4af:66fa:e91b:ff7f), por lo que, tal como sospechaba, es un bug en iproute2mac.

Acabo de subir un commit cambiando una regex. Haz pull, vuelve a crear un paquete nuevo y a ver qué tal ahora.

La regex cuenta con que la IPv6 tenga al menos una ocurrencia de "::". Tienes una IPv6 perfectamente válida que no incluye "::" (`fdac:9735:bca:bd45:4af:66fa:e91b:ff7f`), por lo que, tal como sospechaba, es un bug en iproute2mac. Acabo de subir un commit cambiando una regex. Haz pull, vuelve a crear un paquete nuevo y a ver qué tal ahora.

La versión de la gente, indica que e sla 1.3.0 aunque el paquete sea la 1.3.3

sudo --stdin installer -pkg OGAgentInstaller-1.3.3.pkg -target /Applications

Arroja los valores de la interfaz loopback

Web application available at http://10.80.23.229:39539 20240721 152044+0000 10.80.23.228 opengnsys/rest/ogagent/started {"mac": "00:00:00:00:00:00", "ip": "127.0.0.1", "secret": "nqdfciqvqxdf2umcf6w6rgp7zogwnok3", "ostype": "MacOS", "osversion": "macOS 13.6.7", "agent_version": "1.3.0"} 20240721 154827+0000 10.80.23.228 opengnsys/rest/ogagent/loggedin {"ip": "127.0.0.1", "user": "arantuna", "language": "C", "session": "unknown", "ostype": "MacOS", "osversion": "macOS 13.6.7"}

La versión de la gente, indica que e sla 1.3.0 aunque el paquete sea la 1.3.3 `sudo --stdin installer -pkg OGAgentInstaller-1.3.3.pkg -target /Applications ` Arroja los valores de la interfaz loopback `Web application available at http://10.80.23.229:39539 20240721 152044+0000 10.80.23.228 opengnsys/rest/ogagent/started {"mac": "00:00:00:00:00:00", "ip": "127.0.0.1", "secret": "nqdfciqvqxdf2umcf6w6rgp7zogwnok3", "ostype": "MacOS", "osversion": "macOS 13.6.7", "agent_version": "1.3.0"} 20240721 154827+0000 10.80.23.228 opengnsys/rest/ogagent/loggedin {"ip": "127.0.0.1", "user": "arantuna", "language": "C", "session": "unknown", "ostype": "MacOS", "osversion": "macOS 13.6.7"}`

También en el 443

`sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), _->tx->remote_address, ->param("foo"), _->req->body; ->render (text => "{}") })->start ("daemon", "-l", "https://10.80.23.229:443")'
Web application available at https://10.80.23.229:443
20240721 155354+0000 10.80.23.228 opengnsys/rest/ogagent/started {"mac": "00:00:00:00:00:00", "ip": "127.0.0.1", "secret": "ci0w8gyq8u872age4sbpvvk6gf7tjtez", "ostype": "MacOS", "osversion": "macOS 13.6.7", "agent_version": "1.3.0"}

20240721 155551+0000 10.80.23.228 opengnsys/rest/ogagent/loggedin {"ip": "127.0.0.1", "user": "arantuna", "language": "C", "session": "unknown", "ostype": "MacOS", "osversion": "macOS 13.6.7"}
`

También en el 443 `sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://10.80.23.229:443")' Web application available at https://10.80.23.229:443 20240721 155354+0000 10.80.23.228 opengnsys/rest/ogagent/started {"mac": "00:00:00:00:00:00", "ip": "127.0.0.1", "secret": "ci0w8gyq8u872age4sbpvvk6gf7tjtez", "ostype": "MacOS", "osversion": "macOS 13.6.7", "agent_version": "1.3.0"} 20240721 155551+0000 10.80.23.228 opengnsys/rest/ogagent/loggedin {"ip": "127.0.0.1", "user": "arantuna", "language": "C", "session": "unknown", "ostype": "MacOS", "osversion": "macOS 13.6.7"} `
Poster
Collaborator

Del tema de las versiones ocupémonos en otro ticket, como ya comentamos.

Y sobre los interfaces, tenía algo aquí tecleado pero decidí moverlo a su propio ticket: https://ognproject.evlt.uma.es/redmine/issues/520 "seleccionar el interface de red correcto". Si te parece bien lo dejamos para ese y mergeamos esto.

Del tema de las versiones ocupémonos en otro ticket, como ya comentamos. Y sobre los interfaces, tenía algo aquí tecleado pero decidí moverlo a su propio ticket: https://ognproject.evlt.uma.es/redmine/issues/520 "seleccionar el interface de red correcto". Si te parece bien lo dejamos para ese y mergeamos esto.
Collaborator

Hola,

ok por mi parte, lo vemos en otro ticket.

Ok a mergear esto, lo veo bien.

Gracias.

Hola, ok por mi parte, lo vemos en otro ticket. Ok a mergear esto, lo veo bien. Gracias.
nserrano merged commit 64089e07af into py3-win 2024-07-22 15:36:15 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: opengnsys/ogagent#3
There is no content yet.