4

My goal was to make my Pi create its own WiFi on start so that I can connect to it wirelessly.

I have succeeded by creating a crontab entry (using sudo crontab -e):

@reboot /path/to/create_ap.sh &

where create_ap.sh is a script launching create_ap:

#!/bin/bash
sudo create_ap -n wlan0 MySSID MyPass --daemon

However, I've failed to do this without an additional script: both

@reboot create_ap -n wlan0 MySSID MyPass --daemon

and

@reboot create_ap -n wlan0 MySSID MyPass --daemon &

didn't work as expected (I've also tried to add full path, /usr/bin/create_ap like suggested in comments but that didn't help).

So does crontab allow parameters after the command? (I suspect that only @reboot create_ap bit works in practice, but failed to google that) Or is there some other problem with these lines in crontab and I can adjust them so that an external script is not needed?

  • Does using the full path to create_ap in your crontab work? (I believe the path is /usr/bin/create_ap). Does your crontab change the PATH variable in any other way? – Aurora0001 Jan 1 '18 at 10:56
  • 1
    @Aurora0001 thanks, which create_ap says /usb/bin/create_ap and I've tried full path in crontab but that didn't help – YakovL Jan 1 '18 at 17:51
  • Is this a user crontab, or your system crontab? If it's a user crontab (created with crontab -e) one difference is that the command kicks off as your user, whereas your script includes sudo to execute the command as root. This should go into a system crontab to execute as root on startup. – bobstro Jan 2 '18 at 14:38
  • @bobstro I only used sudo crontab -e so that's root crontab, I guess. Will add this to the question – YakovL Jan 2 '18 at 18:44
  • You've specified a path to the script in your working example, but not a path the the create_ap script in the non-working entries. Try prepending a path to create_ap. Check logs or email for errors. – bobstro Jan 2 '18 at 20:06
0

Well, the .sh script calls sudo before create_ap. Either run the crontab entry as root, or prepend the sudo. So try @reboot sudo /usr/bin/create_ap -n wlan0 MySSID MyPass --daemon

  • I used sudo crontab -e which means I used the first option, right? I've read also that the second option is not a proper approach: askubuntu.com/a/173930/532531 (but actually I've already tried the line you proposed as well) – YakovL Jan 2 '18 at 18:48
  • Yes, sudo crontab -e works if you want to run the crontab entry as root directly. Considering the second option, you can mitigate that risk from the link by putting pi ALL= NOPASSWD: /usr/bin/create_ap in /etc/sudoers.d/pi. – steviethecat Jan 3 '18 at 7:41
  • Reading github.com/oblique/create_ap also gives the alternative to start it from systemd (also check github.com/oblique/create_ap/issues/4). – steviethecat Jan 3 '18 at 7:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.