
Soy nuevo en Linux y estoy haciendo un proyecto de Bluetooth de bajo consumo utilizando Intel Edison. El Edison tiene un Yocto 1.6.1. Utilicé Bluz y gatttool para conectar mi sensor BLE. Pero necesito escribir el mismo comando cada vez que quiero una conexión. Entonces quiero escribir un script de shell y dejar que se ejecute automáticamente cuando inicio la placa.
En la ventana de terminal, ingreso estos comandos:
rfkill unblock bluetooth
hciconfig hci0
export PATH=$PATH:~/bluez-5.24/attrib/
gatttool -b D2:AD:9F:B7:BB:60 -I -t random
Salta a [D2:AD:9F:B7:BB:60][LE]> y luego escribo "conectar"
[D2:AD:9F:B7:BB:60][LE]> connect
Attempting to connect to D2:AD:9F:B7:BB:60
Connection successful
[D2:AD:9F:B7:BB:60][LE]> char-write-req 0x000e 0100
Cuando escribo un script de shell, ¿cómo puedo manejar "[D2:AD:9F:B7:BB:60][LE]>" en mi script? No puedo poner "conectar" directamente. No funcionará.
#!/bin/sh
rfkill unblock bluetooth
hciconfig hci0
export PATH=$PATH:~/bluez-5.24/attrib/
gatttool -b D2:AD:9F:B7:BB:60 -I -t random
conncet
char-write-req 0x000e 0100
Respuesta1
La expect
herramienta debe hacer lo que quieras.
Viene con autoexpect
el cual producirá un guión esperado "viendo" una sesión interactiva suya. Ejecute autoexpect
, luego haga todo lo que haría en su shell normal y, al salir del shell, obtendrá un archivo script.exp
que luego podrá usar como base.