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://bloglibre.net/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 ;)

Déjà 6 avis pertinents dans Réinstallation et Termux API

  • Reg
    J’utilise pas mal Termux, moi aussi, et tes articles m’intéressent beaucoup.

    Petit rectificatif, si je peux me permettre : pas besoin d’être root pour utiliser Termux-api (ou en tout cas pas pour tout).

  • Xavier Cazin
    Salut,

    Très intéressant article, merci !

    Pour info, je n’ai pas non plus besoin d’être root (sur un S4 avec Android 5.0.1). En revanche, les scripts ne s’exécutent que si je laisse Termux décider du shell (l’outil fix-shebang n’y fait rien). Peut-être que le fait d’être root permet juste de forcer l’exécution du shell. My 2 cents.

    J’en profite pour poser une question annexe : lorsqu’on a créé des fichiers sur la sdcard, après avoir configuré le file system avec termux-setup-storage, est-ce qu’ils sont retrouvés par Termux après une réinstallation ?

    Merci !
    Xavier.

  • Xavier Cazin
    OK, merci quand même ! Bien sûr, on attend l’article sur le résultat du creusage, parce qu’ici, non seulement on n’aime pas déboguer, mais on ne saurait pas faire :-)

Les commentaires sont fermés.