Article dans la série 'Termux sur Android' : Réinstallation et Termux API

Il n’aura échappé à personne que je passe pas mal de temps sur Termux. Je n’ai d’ailleurs aucune idée si ça passionne les foules, vous avez le droit de dire ce que vous en pensez dans les commentaires.

Réinstallation rapide de Termux

Afin de gagner du temps dans mes multiples tests, j’ai décidé de m’organiser et notamment de prévoir une réinstallation rapide de Termux. Je dépose le script termux.sh dans /sdcard/Download/ (en branchant mon téléphone sur le pc avec le câble USB) puis je lance les commandes suivantes.

cp /sdcard/Download/termux.sh ~/ # On copie le script dans le HOME car on n'a pas les droits pour l'exécuter dans /sdcard/Download
chmod +x termux.sh && ./termux.sh # On rend le script exécutable puis on le lance

Voici le script termux.sh. Le paquet python2 m’est nécessaire car j’utilise Ansible à partir de mon poste xubuntu pour configurer le téléphone. L’intérêt n’est pas forcément évident, tous les modules Ansible ne sont pas pris en charge (le module apt notamment).

#!/data/data/com.termux/files/usr/bin/bash
# termux.sh v0.1
#

apt update && apt upgrade # On met à jour la liste des paquets puis on met à jour les paquets
apt -y install curl nano openssh python2 # On installe les paquets de base
curl https://blog-libre.org/dl/xubuntu_key >> ~/.ssh/authorized_keys # On autorise notre poste xubuntu à se connecter au téléphone
chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh # On met les droits qui vont bien
sshd # On lance le démon SSH afin de pouvoir se connecter en SSH sur le téléphone

J’utilise Ansible pour configurer Termux que je lance ainsi à partir de mon poste xubuntu.

cd /etc/ansible && ansible-playbook termux.yml -e host=G3 # On configure Termux

Voici le fichier /etc/ansible/hosts.

[android]
G3 ansible_host=192.168.1.12 ansible_port=8022 ansible_shell_executable=/data/data/com.termux/files/usr/bin/bash ansible_python_interpreter=/data/data/com.termux/files/usr/bin/python2

Voici le playbook termux.yml.

---
- name: Termux configuration
  hosts: "{{ host }}"
  tasks:
    - name: Install packages
      command: apt -y install bash-completion dnsutils man ncdu python ranger rsync termux-api wget

    - name: Create folders
      file: path={{ item }} state=directory mode=0755
      with_items:
        - /data/data/com.termux/files/home/scripts
        - /data/data/com.termux/files/home/logs
        - /data/data/com.termux/files/usr/var/spool/cron/crontabs

    - name: Copy .bash_profile
      copy: src=bash_profile dest=/data/data/com.termux/files/home/.bash_profile mode=0644

    - name: Copy inputrc  
      copy: src=inputrc dest=/data/data/com.termux/files/usr/etc/inputrc mode=0644

    - name: Copy scripts
      copy: src={{ item }} dest=/data/data/com.termux/files/home/scripts/ mode=0755
      with_fileglob:
        - /etc/ansible/*.sh

On pourrait faire très différent évidemment et tout inclure dans termux.sh… mais je kiffe Ansible ! Et puis en voyant termux-api juste après, ça donne plein d’idées.

Termux:API

Pour utiliser Termux:API, il faut installer Termux:API sur le téléphone à partir de Google Play ou de F-Droid. Il faut également installer le paquet termux-api sur Termux avec la commande apt install termux-api. Enfin il faut être root sur le téléphone su.

Vous trouverez ici la liste des API ainsi que quelques explications.

termux-tts-speak -e com.google.android.tts -l french "bonjour femme pupuce je t'aime" # Utiliser le text-to-speech, il faut préalablement checker les moteurs text-to-speech disponibles avec la commande termux-tts-engines
termux-sms-send -n 0123456789 "Test Termux ;)" # Envoyer un SMS
termux-toast "Voilà\\nun\\nbisus" # Afficher un message en boite flottante sur votre téléphone, les \\n sont là pour aller à la ligne
termux-vibrate -d 2000 # Faire vibrer le téléphone pendant 2000 ms
termux-notification -c Pizza -t 12h00 # Afficher une notification avec comme titre 12h00 et comme texte Pizza

Tout cela peut être scripté… ou on peut déléguer à Ansible. Faire vibrer son téléphone quand une tâche longue sur un serveur est terminée, c’est professionnel ou pas ? Ou un text-to-speech : « Chef j’ai terminé le job ». Parce que c’est plus classe qu’un mail ha ha ha !

Bonus : Playbook pour installer Ansible sur le téléphone

Voici le playbook ansible.yml.

---
- name: Installation Ansible
  hosts: "{{ host }}"
  environment:
    CONFIG_SHELL: /data/data/com.termux/files/usr/bin/sh
  tasks:
    - name: Install packages
      command: apt -y install autoconf clang libffi-dev libgmp-dev make openssl-dev python2-dev

    - name: Install pycrypto
      pip: name=pycrypto executable=pip2

    - name: Install ansible
      pip: name=ansible version=1.8 executable=pip2

Bon avec tout ça j’ai oublié de vous parler de Mosh, au prochain épisode ;)

Vus : 815
Publié par blog-libre : 132