컴퓨터 통계를 자동으로 생성하고 전자 메일로 보내는 방법
매일 서버의 다양한 로그 데이터 및 통계를 확인하는 것이 중요하지만 지루해집니다. 매일 하이라이트가 포함 된 단일 이메일을받는 것이 좋지 않으니 문제를 확인하기 위해 서버에 올라갈 필요가 없습니다. 이 가이드는 Linux 및 Windows에서 자동화 된 이메일을 구성하는 방법을 보여줍니다..
우분투 및 Windows 8.1 용으로이 메일을 구체적으로 다루고 있습니다. 메일이 발송되는 이메일 서버로 Gmail이 사용되고 있습니다. 다른 버전의 Linux 또는 Windows를 사용하거나 다른 이메일 서비스를 사용하려는 경우 여기의 지침은 쉽게 적용 할 수 있어야합니다..
Linux에서 자동화 된 이메일
이를 위해 두 개의 다른 패키지 인 ssmtp와 mailutils를 사용할 것이므로 다음 명령을 사용하여 두 패키지를 모두 설치하십시오.
$ sudo apt-get install ssmtp mailutils
설치가 끝나면 SSMTP 구성 파일을 약간 변경해야합니다.
$ sudo vi /etc/ssmtp/ssmtp.conf
이러한 변경 사항으로 파일을 편집하십시오 (원하는 경우 파일의 모든 텍스트를 지우고 복사 / 붙여 넣기하는 것이 안전합니다).
#이 주소는 전자 메일을 수신하므로 수신하려면 전자 메일을 입력하십시오..
# 여기에 이메일 서버를 지정하십시오 (Gmail을 사용하는 경우 그대로 두십시오)..
mailhub = smtp.gmail.com : 587
# 메일의 출처가 될 도메인 이름.
rewriteDomain = gmail.com
#이 이메일의 출처가되는 이메일 주소.
# SSL / TLS 설정, Gmail 및 기타 대부분의 메일 서버에 필요함.
UseTLS = 예
STARTTLS 사용 = 예
# Gmail 계정의 사용자 이름과 비밀번호.
AuthUser = 사용자 이름
AuthPass = 암호
# 위와 다른 출발지 주소를 지정할 수 있습니다..
FromLineOverride = yes
파일 편집이 끝나면 Gmail 비밀번호가 일반 텍스트로 저장되므로 권한을 변경해야합니다..
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ssmtp.conf
루트를 파일의 소유자로 만드는 것이 더 안전하지만 스크립트에서 sudo 명령을 사용해야하므로 암호를 요구하게되므로이 전체 프로세스를 자동화하는 목적을 무효화합니다.
공유 서버를 사용하고 있고 비밀번호가 일반 텍스트로 저장되고 루트가 읽을 수 없다고 염려 할 경우, 쓸모없는 Gmail 계정을 만들거나 처음부터 어떤 유형의 인증도 요구하지 않는 이메일 서버를 사용하십시오.
모든 것이 올바르게 구성되었는지 확인하려면 테스트 이메일을 시도해보십시오.
$ echo "테스팅"| mail -s "메일 설정 테스트"[email protected]
"Testing"은 이메일 본문에 표시되며 제목은 "Testing mail setup"입니다. 이메일을 확인하여 수신했는지 확인하십시오.
전자 메일 용 스크립트 작성
명령 줄에서 전자 메일을 보낼 수있게되었으므로 시스템에 대한 기본 정보를 보낼 스크립트를 작성해 보겠습니다..
#! / bin / bash
# 하드 드라이브 공간 확인
echo "하드 드라이브 공간 :"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# 로그인 한 사용자 나열
echo "현재 로그인 한 사용자 :">> /home/geek/email.txt
who >> /home/geek/email.txt
# 현재 실행중인 프로세스 나열
echo "실행중인 프로세스 :">> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# 이메일 보내기
cat /home/geek/email.txt | mail -s "매일 서버 정보"[email protected]
# 우리가 만든 파일을 삭제하십시오
rm /home/geek/email.txt
분명히 스크립트로 훨씬 더 깊이 이해할 수 있으며 서식을 조금 더 멋지게 만들 수도 있습니다. 그러나 이것은 출력이 우리의 이메일에서와 같이 보이는 것입니다.
스크립트가 작성되고 테스트되었으므로 cron을 사용하여 매일 같은 시간에 자동으로 실행할 수 있습니다. 이 예에서는 매일 아침 2시에 전송할 이메일을 구성하므로 나중에 해당 데이터를 검토 할 수 있습니다.
$ crontab -e
오전 2시 이메일 :
0 2 * * * /home/geek/script.sh
이 부분에 대한 추가 도움말이 필요하면 crontab 파일에 대한 전체 기사를 작성했습니다..
Windows의 자동화 된 전자 메일
PowerShell을 통해 명령 줄에서 전자 메일을 보낼 수는 있지만 타사 응용 프로그램, 특히 Gmail을 사용하는 경우이 기능을 구현하는 것이 훨씬 쉽다는 것을 알았습니다. SendEmail은 Windows 작업 스케줄러 및 Gmail과 쉽게 통합 할 수있는 Windows 용 무료 프로그램입니다. 위의 링크를 클릭하여 최신 복사본을 다운로드하고 TLS 지원 버전을 다운로드하십시오..
SendEmail을 다운로드 한 후에는 zip 파일을 추출하고 자동 이메일을 보내려는 한 저장할 수있는 곳에 내용을 저장하십시오. 이 예제에서는 C : \ SendEmail에 프로그램을 저장하려고합니다.
SendEmail을 테스트 해보고 어떻게 작동하는지 빠르게 알아 봅니다. 시작 또는 실행 (Ctrl + R) 메뉴에 cmd를 입력하여 명령 프롬프트를 엽니 다..
명령 프롬프트를 연 상태에서 디렉토리 변경 명령을 사용하여 SendEmail 파일을 저장 한 위치로 이동하십시오.
cd C : \ SendEmail
이제 다음 명령을 사용하여 테스트 이메일을 보낼 수 있습니다.
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu 사용자 이름 -xp password -u "전자 메일 제목 테스트"-m "테스트 전자 메일입니다."
분명히 명령을 실행하기 전에 "username"과 "password"를 계정 자격 증명으로 바꾸십시오..
위의 명령이 실제로 수행하는 작업은 다음과 같습니다.
이메일을 보내
프로그램을 실행한다..
-에프
- 보낸 사람 주소
-티
- 해결할
-에스
- SMTP 서버
-슈
- 계정 사용자 이름
-XP
- 계정 비밀번호
-유
- 메일 제목
-엠
- 이메일 본문 텍스트
받은 편지함에서 테스트 이메일을 받았는지 확인한 다음 서버 정보를 보내주는 스크립트 작성으로 넘어갈 수 있습니다.
전자 메일 용 스크립트 작성
스크립트를 최대한 활용하려면 PowerShell 용으로 작성해야합니다. Windows PowerShell ISE를 실행 프롬프트 (Ctrl + R)에 powershell_ise.exe를 입력하여 엽니 다..
PowerShell ISE 창의 오른쪽에서 PowerShell이 실행할 수있는 모든 명령을 나열 할 수 있습니다. 이렇게하면 필요한 정보 유형을 생성하는 데 도움이됩니다. 스크립트에서 타사 프로그램을 호출하여 정보를 출력 할 수도 있습니다 (예 : SendEmail은 타사 앱이지만 PowerShell은 cmd를 사용하여 정상적으로 수행 할 수없는 작업을 수행 할 수 있음).
예제 스크립트에서는 C 드라이브의 현재 디스크 사용량을 확인하고 현재 실행중인 프로세스를 표시하며 현재 네트워크를 통해 공유되는 모든 파일을 보여줍니다.
# 하드 드라이브 공간 확인
echo "C : 드라이브 사용 :"> C : \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C :'"| Select-Object Size, FreeSpace >> C : \ SendEmail \ info.txt
# 현재 실행중인 프로세스 나열
echo "실행중인 프로세스 :">> C : \ SendEmail \ info.txt
get-process >> C : \ SendEmail \ info.txt
# 현재 공유되는 파일 / 폴더 나열
에코 "SMB 공유 :">> C : \ SendEmail \ info.txt
get-smbshare >> C : \ SendEmail \ info.txt
# 이메일 보내기
C : \ SendEmail \ info.txt |를 입력하십시오. C : \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu 사용자 이름 -xp password -u "매일 서버 정보"
# 우리가 만든 파일을 삭제하십시오
rm C : \ SendEmail \ info.txt
이 스크립트에서는 다양한 정보가 C : \ SendEmail \ info.txt에 출력 된 다음 해당 문서의 텍스트가 삭제되기 전에 이메일로 전송됩니다. ps1 파일 확장자 (PowerShell 파일)로 스크립트 저장.
스크립트가 끝나면 실행 프롬프트에서 빠른 테스트를 실행하여 제대로 작동하는지 확인하십시오.
그냥 파워 쉘
명령과 함께 -파일
인수를 지정하고 스크립트의 경로를 지정하십시오.
powershell -file "c : \ SendEmail \ daily-email.ps1"
받은 편지함에서 이메일을 받았는지 확인하십시오. 그렇지 않은 경우 스크립트에서 구문 오류를 확인하십시오. 예제 스크립트의 생성 된 전자 메일은 다음과 같습니다.
Windows에서보다 읽기 쉬운 형식으로 필요한 정보를 출력 할 타사 프로그램을 사용할 수 있습니다 (예 : 텍스트 사이에 빈 줄을 표시하는 등). 스크립팅 프로세스는 여전히 동일합니다).
스크립트에서 꼬임 문제를 해결하면 Windows 작업 스케줄러를 사용하여 스크립트를 자동화 할 수 있습니다. 시작 메뉴를 통해 Windows 작업 스케줄러 열기.
작업 스케줄러를 연 상태에서 작업> 기본 작업 만들기를 선택합니다..
이 작업의 이름을 "Daily email script"로 지정하고 다음을 클릭하십시오. 다음 화면에서 이메일 스크립트를 실행할 빈도를 매일 선택하십시오. 그런 다음 스크립트를 실행할 시간을 선택하고 다음을 누릅니다..
이제 마법사의 "작업"부분에 있어야하며 "프로그램 시작"을 선택하고 스크립트를 테스트하기 위해 앞서 실행 프롬프트에 입력 한 텍스트를 입력하십시오.
다음에 히트하고이 창에서 예를 누릅니다.
마지막 메뉴에서 마침을 클릭하면 자동 이메일 예약이 완료됩니다..