bash 스크립트좀 봐주세요.
글쓴이: u235 / 작성시간: 목, 2020/02/27 - 8:17오전
#!/bin/bash # Raspberry PI IP configuration data subject="from raspberry pi" from="pu239@naver.com" to="u239@nate.com" ethtool eth0 IP=$? until [ $IP -eq 0 ] do sleep 2 ethtool eth0 IP=$? done content="본 라스베리 파이는 `hostname -I` IP로 연결되어 있습니다." echo "$content" | mail $to -r $from -s "$subject" //할당된 ip주소를 메일로 발송
이 스크립트 파일명을 crontab에 넣어 부팅시 ip 주소를 메일로 보네는것입니다.
중간의 until 구문이 없으면 ip를 할당받기 전에 실행돼서 빈 값이 나와서 추가했습니다.
그런데 그게 부팅 단계에서는 오류가 되어 루프를 빠져나가 실행이 안됩니다.
이유가 뭔가요
Forums:
명령어 사용시 절대경로 다 입력해서 해보세요
명령어 사용시 절대경로 다 입력해서 해보세요
/sbin/ethtool
헐 바로 그거같네요. 감사합니다
헐 바로 그거같네요.
감사합니다
덕분에 깔끔하게 잘 수정했습니다.
내친김에 nslookup으로 네트워크 연결까지를 확인후 발송하도록 고처서 완벽 작동합니다.
불과 몇줄인데도 수십번의 수정을 거처야 하였으며 호되게 데여보니 >& 와 함께 로그의 중요성도 실감했네요 ㅋㅋ
다만 등록된 메일서버가 아니어서인지 스팸 메일함으로 수신되네요 ㅠㅠ
James Gostling
훌륭합니다
내부에서 외부로 시스템정보를 전자메일로 전달하게끔 하는게
굉장히 난이도 높은 기술인데
박수를 보냅니다^^^
차후 할 수 있다면 Sendmail 대신 ssmtp/msmtp 나 nullmailer 같은걸로도
구현이 되면 팁으로 남겨주시길 부탁드려요^^^
[우분투 18.04 파여폭스 나비에서 작성했습니다]
스마트호스트 적용하시면 됩니다
라즈베리파이에서 smtp.naver.com 을 경유시키셔요.
참고주소: https://getmailspring.com/setup/access-naver-com-via-imap-smtp
상기 댓글 내용 -- 스마트호스트 -- 이 무엇을 말하는지 그리고 왜 필요한지를 이해하셨다면 차후 ssmtp/msmtp/nullmailer 같은것도 쉽게 설정하실 수 있을거에요~
본 댓글의 핵심쟁점은 스마트호스트 입니다.
[우분투 18.04 파여폭스 나비에서 작성했습니다]
--
^고맙습니다 감사합니다_^))//
죄송한 말씀이지만, 부팅 프로세스가 있는데, 중간에
죄송한 말씀이지만, 부팅 프로세스가 있는데, 중간에 끼어들어서 뭔가를 하기보다는 부팅 완료된 후에 sendmail 같은거 실행하는게 좋아요.
옛날 시스템이라면 rc0 rc1 ... rc5 rc6 이라는 run level 이 있고, /etc/init.d ?? 인가.. /etc/rc.local ?? 디렉토리였던가... 그러게 있거든요. rc6 에 위치시키면 됩니다. 루프 돌리지 말고요.
systemd 작동되는 환경이라면
systemctl start sendmailip 이런식으로 실행시킬 수 있도록 서비스 파일 만들어줘야 합니다.
답변 감사합니다.
답변 감사합니다.
일단 모니터가 없는 라스베리파이용입니다.
때문에 부팅시 할당받은 ip를 메일로 쏴줘야 ssh든 뭐든 접속할수 있기 때문입니다.
rc.local은 없는 버전이고 해서 crontab 스크립크가 필요했습니다.
그런데 ethtool 보다는 인터넷 연결된이후 발송해야 실패하지 않는점을 고려하면 nslookup 루프가 적절할것 같네요.
파이썬3 입니다.
[우분투 18.04 파여폭스 나비에서 작성했습니다]
[크롬OS 에서 스크린샷 올렸습니다]
--
^고맙습니다 감사합니다_^))//
인트라넷 사설대역에서 접속할 경우도 첨부합니다
[우분투 18.04 파여폭스 나비에서 작성했습니다]
--
^고맙습니다 감사합니다_^))//
조언 감사합니다.
실은 파이가 이처럼 어떤 현장에 속해있을경우 항상 문제되는 부분인데요.
어떤 이벤트 상황을 외부에 알리는 수단으로 자체 서버를 구성하면 라우터에 접근하지 않는한 외부에서는 직접 접속할 수단이 없는 샘입니다.
때문에 궁여지책으로 단방향이지만 우선은 메일을 통하는 방법을 사용한것이고
차후 생각하는 제대로된 통신방법으로는 공인된 장소의 DB를 매개수단으로 사용하려고 합니다.
즉 현장에서 측정된 데이터는 파이선으로 외부 DB에 주기적으로 기록하며 외부에서는 PHP로 DB를 읽어오는 방법이 어떤가 생각하고 있으며 이를 역으로도 구현하면 현장쪽으로 간단한 지시도 가능하지 않을까 합니다만...
James Gostling
참고로 curl이 HTTP 도 지원합니다. 내부
참고로 curl이 HTTP 도 지원합니다. 내부 시스템정보들을 외부로 HTTP 방식으로 전송할 수 있다는걸 예전에 우분투 대화방에서 어떤분께 들었어요. 이리되면 번거로운 SMTP(전자메일) 방식을 쓰지않고도 공인된장소의 DB 에 HTTP 방식으로 정보를 직접 기록할 수 있을거라 생각합니다.
[우분투 18.04 파여폭스 나비에서 작성했습니다]
curl에 한표 추천합니다.
curl에 한표 추천합니다.
curl http://xxx.xxx.com/update.php?nodename=1&localip=192.168.1.1&hostname=node1
이런식으로 curl로 보내고 받으면 사설 및 공인IP도 쉽게 확인 가능합니다.
또한 많이 단순해지죠
확인 감사드립니다^^^
확인 감사드립니다^^^
[우분투 18.04 파여폭스 나비에서 작성했습니다]
DB 업로드에는 curl 보다는
파이선으로 함수를 만들어 인자를 통한 데이터 전달이 수월하지 않을까 합니다
사용할 DBMS는 PostgreSql 입니다.
James Gostling
시스템 구축 잘 되시면 차후 여유생기실때에 강좌란에
시스템 구축 잘 되시면 차후 여유생기실때에 강좌란에 소개 부탁드릴께요^^^
[우분투 18.04 파여폭스 나비에서 작성했씁니다]
댓글 달기