라즈베리파이를 public 망에 물려서 공인 IP를 받아 쓰기 시작했다. 공인 IP를 받으면 어디서든 제약 없이 접근할 수 있으니 따로 서버 호스팅을 하는 것과 동일한 효과를 볼 수 있다. 공인 IP에 도메인을 연결해두면 도메인으로도 접근이 잘 된다.
라즈베리파이는 입출력 장치 없이 사용하는 서버이므로 부팅시 IP를 알려주는 방법이 필요해서 찾아봤는데, 처음 검색된 것이 gmail smtp를 이용하여 메일로 알림을 주는 것이다.
이것이 잘 되면 좋을텐데, 구글에서 비 보안 어플리케이션이 접근한다면서 보안 경고를 보내온다. 좀 꺼림직하여 다른 방법을 찾아봤다.
다음으로 시도해본것이 scp를 이용하여 ip를 다른 서버에 알려주는 것이다. authorized_keys도 입력을 해 두고 비번 없이 scp가 되도록 설정을 해 두었는데 이상하게 잘 안된다. pi 계정, root 계정 모두 pub key를 등록해봐도 안된다. rc.local에 스크립트를 추가하는 방식이었는데 될 것 같은데 안되는…
다음으로 시도해본게 NAS에 ftp로 ip 주소를 전송하는 방법이다. 라즈베리파이가 부팅하면서 ip.html 이라는 파일을 만들고 이를 ftp를 이용하여 NAS에 전송한다. NAS에 http로 접근하면 해당 주소를 web으로 바로 확인할 수 있다. cron 작업에 하루에 한번 IP를 리포트하도록 설정을 했다. 깔끔하게 동작한다.
pi@raspberrypi:~ $ cat startup.sh #!/bin/bash HOST='nas.server.net' USER='nas_ftp_id' PASSWD='nas_password' FILE='ip.html' cd /home/pi hostname -I > $FILE date >> $FILE ftp -n $HOST << END_SCRIPT quote USER $USER quote PASS $PASSWD cd /web put $FILE quit END_SCRIPT
위 스크립트는 ip address를 ip.html 파일에 기록한 후 ftp로 server로 전송하는 스크립트이다. 본인 상황에 맞게 수정하여 사용하면 될 것 같다.
부팅시 위 스크립트를 실행하기 위해 rc.local 파일에 다음 라인을 추가했다.
pi@raspberrypi:~ $ cat /etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" /home/pi/startup.sh # 라인 추가 fi exit 0
하루에 한 번 실행되도록 cron에도 추가해줬다.
pi@raspberrypi:~ $ crontab -l # Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any').# # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command 0 4 * * * /home/pi/startup.sh