sshpass ou ssh ne fonctionnent plus

simoncelli

Membre confirmé
10 Décembre 2013
11
0
Bonjour,

J'ai un script dont le but et d'aller voir régulièrement sur mon téléphone android s'il y a des nouvelles photos. Si c'est le cas, il les copie sur le mac.

Le téléphone est un android 4.0.4 (oui je sais…) et le mac est un mac-mini de 2009 avec osx mojave. J'ai ajouté une entrée dans /etc/crontab pour exécuter mon script toutes les minutes. Et ça fonctionnait bien - me semble-t'il - avec el capitain. Depuis que je suis passé sous majave, ça fonctionne lorsque j'appelle le script manuellement, depuis le terminal. Lorsqu'il est appelé par crontab, ça ne fonctionne plus.

Voici le début de mon script

#!/bin/sh
#echo "Press CTRL+C to proceed."
#trap "pkill -f 'sleep 1h'" INT
#trap "set +x ; sleep 1h ; set -x" DEBUG
scpencours=$(ps | grep -i scp | wc -l)
if [ $scpencours -le 3 ] ; then
echo "condition"
#sshpass -p admin ssh -o ConnectTimeout=10 [email protected] -p 22 ls /sdcard/DCIM/100ANDRO>/tmp/test
source=$(sshpass -p admin ssh -o ConnectTimeout=30 [email protected] -p 22 ls /sdcard/DCIM/100ANDRO)
echo "$source" | wc -l
[…]

Depuis le terminal, wc me renvoie 1772, depuis crontab, wc me renvoie 1 (liste vide).

Pourquoi ???

Merci d'avance pour votre aide :)
 
Dans ce genre de situation, le plus simple est de créer des entrées à chaque étape dans un journal pour voir quel est le contexte, les valeurs des diverses variables au temps de l'exécution etc.
Dans la table de quel utilisateur as-tu créé cette entrée ?

[Au passage : peut-être serait-il mieux d'utiliser des clefs plutôt qu'un mot de passe]
 
À chaque nouvelle version de macOS il y a de nouvelles limitations.
J'ai le vague souvenir de limitations à cron pour des raisons de sécurité mais je n'arrive plus à retrouver les articles...

Le blocage pourrait survenir de cron même ou, éventuellement, d'un pare-feu du système empêchant des connexions automatiques depuis un compte ayant des provilèges élevés : root ou un compte d'administration, par exemple.

As-tu pensé à regarder les journaux du système (avec l'application Console) : si la tâche génère une erreur, celle-ci y sera enregistrée.

[edit]
Regarde sur cette page : le sujet principal est l'application Terminal et certains problèmes de droits ; cependant, dans les commentaires, on parle de problèmes avec cron et d'une solution qui pourrait t'aider (p.ex. le commentaire d'un certain Craig Francis).
 
Dernière édition:
Merci pour les infos. En définitive, j'ai décidé de ne pas m'embarasser avec un Unix bridé, surtout s'il y a des limitations futures (quoique mon matériel soit au bout de son évolution logicielle…). Je vais donc conserver mon mac comme client, et tel quel. Pour le reste, je me tournerai vers une solution à base de linux / raspberry qui me permettra de faire du sshpass avec du ssh depuis un cron, le tout empaqueté dans un script… bref, faire mumuse quoi !