Synology 쉘스크립트 백업

NAS
#!/bin/bash #날짜 date=$(date '+%Y%m%d%H%M') NowDate=`date` # 기존 파일 삭제 /usr/bin/rm -f /volume1/web/backup/data/${date}.sql /usr/bin/rm -f /volume1/web/backup/data/${date}.tar.gz # 압축 backup 디렉토리, phpMyAdmin 디렉토리 제외 /usr/bin/tar -zcvf /volume1/web/backup/data/${date}.tar.gz /volume1/web/* --exclude /volume1/web/backup --exclude /volume1/web/phpMyAdmin # 압축파일 일정시간 지난후 삭제 /usr/bin/find /volume1/web/backup/data/ -name '*.tar.gz' -mtime 30 | xargs /usr/bin/rm -f #MySQL DB sql backup /volume1/@appstore/MariaDB10/usr/local/mariadb10/bin/mysqldump -u사용자 -p패스워드 데이터베이스 > /volume1/web/backup/data/${date}.sql #일정기간 경과 파일 삭제 /usr/bin/find /volume1/web/backup/data/ -name '*.sql' -mtime 30 | xargs /usr/bin/rm -f
Read More

Apache SSL 등급 확인

Linux, WWW
제가 운영하는 웹서버의 SSL 등급기 갑자기 궁금해져서 한번 테스트를 해보았습니다. 테스트에 사용된 사이트는 ssllabs.com 에 기능을 이용하였습니다. 아래에 링크를 첨부해 놓았습니다. https://www.ssllabs.com/ssltest/analyze.htm 결과는 좋게 A 등급이 나왔습니다. 서버에 사용하는 모든 버전이 업데이트 되면서 결과가 좋게 나온다고 생각은 하였지만 생각하는 부분과 결과를 눈으로 직접 보는것은 다른듯 합니다. 결과화면에 대한 캡쳐본 가끔식은 트렌드에 따라서 움직여야 하는 일이 있습니다. 특히 보안에 관련된 사항은 좀 더 많은 부분을 신경쓰고 현재 진형으로 가는 부분을 잘 적용하는것이 좋을듯 합니다. 위 결과 화면 아래에 더 많은 정보가 있지만 캡쳐를 할 이유가 없어서 위에 가장 중요한 화면만 캡쳐만 한것입니다.
Read More

리눅스 디스크 사용량 확인

Linux
리눅스에서 디스크 사용량에 대해서 확인하는 명령어 입니다. 간단하게 'df'로 해서 처리를 할 수 있지만 다른 부분에 대해서도 확인 가능한 명령어입니다. df df -P 전체용량 # KB단위 df -P | grep -v ^Filesystem | awk '{sum += $2} END { print sum " KB" }' # GB 단위 df -P | grep -v ^Filesystem | awk '{sum += $2} END { print sum/1024/1024 " GB" }' 전체 사용량 # KB 단위 df -P | grep -v ^Filesystem | awk '{sum += $3} END { print sum " KB" }' # GB 단위 df -P | grep -v ^Filesystem | awk '{sum += $3} END { print sum/1024/1024 " GB" }' 전체 남은 용량 # KB단위 df -P | grep -v ^Filesystem | awk '{sum += $4} END { print sum "…
Read More

서버 운영체제 버전업!!!

Linux
제가 사용하는 서버의 OS의 운영체제가 버전이 달라졌습니다. 그래서 기존에 사용하던 내용을 새로운 서버에 모두 이전한다고 3~4시간을 투자하였습니다. 물론 계획을 잡기 위해서까지 시간을 한다면은 꽤 많은 시간이 소비되었지만요.... 이전은 계획대로 순조롭게 진행이 되었고, 서버 자체의 접속을 차단한경우는 약 2시간 정도 걸렸는데, 정작 중요한 블로그에 인증서 갱신에 걸려서 강제적으로 1시간을 기다려야 하는 상황이 다가와 버렸습니다. 이러한 문제로 인해서 SSL인증서가 적용되지 않도록 소스 자체를 수정하도록 하고 있습니다. 그래도 블로그 접속이 정상적으로 되어야 한다는 생각이 나서 말이죠 일단 점심 시간이 다가와서 점심을 먹고오면은 1시간이 지나니 다시 시도해 보고 글을 남기도록 하겠습니다. ※ 추가내용 다행이 오래 기다리지 않고 SSL 인증서를 적용하였습니다. 소스 및 DB상의 SSL 인증서를 제거한 부분을 다시 살린다고 지금까지 한 과정을 꺼꾸로 진행중에 있습니다. OS가 바뀐것뿐인데 서버가 상당히 쾌적해졌습니다. 물론 새롭게 설치한 서버에 별 다른 작업을 하지 않아서 쾌적한것도 있을것이라고 생각이 들지만 blog를…
Read More
Local에 운영하는 DNS Server

Local에 운영하는 DNS Server

Windows
개인 컴퓨터에서 나만의 도메인을 만들어서 비공개로 웹브라우저로 이용을 하는데, 매번 hosts 파일을 수정하는것이 번거로워서 만들게 된것입니다. 그렇다고 해서 특별한 기능을 넣거나 하지 않으면서 hosts 파일에 대한 수정을 최대한 줄여보고자 하는 형태로 개발이 된것입니다. 아래의 화면은 프로그램 실행 화면입니다. 프로그램 자제적으로 SQLite DB를 사용해서 자제적으로 DB를 이용해서 항상 그래도 운영이 되도록 만든것입니다. hosts 파일 수정은 원래 권장되는 방법도 아니고, 백신 업체들도 hosts 파일에 대한 변조를 체크하는 업체들도 있어서 가능하면은 사용하지 않는것이 좋은것입니다. 프로그램 실행화면 현재 test.test.com 이라는 도메인을 한번 만들어서 넣어본것입니다. 계속 추가하고 변경하고 삭제를 할 수 있도록 만든다고 하였지만 문제점도 있지만 쓸만은 합니다. 윈도우에서 CMD 를 통해서 nslookup 를 통해서 목록에 추가한 도메인을 조회한 모습니다. nslookup 으로 확인한 화면 프로그램 초기 버전 파일을 다운로드 할 수 있습니다. SimpleLocalDnsServer다운로드 현재 프로그램 도중에 DNS 정보가 정상적으로 갱신이 되지 않기도 합니다. 단기간에 만들다보니…
Read More
단일 테이블에서 실시간 가동률 뽑기

단일 테이블에서 실시간 가동률 뽑기

Database, PHP
일단 하기는 하였는데, 말이 안된다고 생각함! 문제가 뭐냐 하면은 모니터링 데이터를 제가 가공하는것이 아니라, 누군가 가동해 놓은 데이터를 가지고 실시간으로 전달해주는 행단위로 입력된것으로 데이터를 뽑습니다. 위와 같은 화면을 뽑기 위해서 처리해야 될 일은 많지만 이미 내가 만들지 않았고, 있는 정보를 가지고 처리를 해야 합니다. 위와 같은 형식으로 행단위로 엄청나게 쌓이기 시작합니다. 매일 몇초 단위로 데이터가 계속 들어오는 상태입니다. 1개의 Table를 가지고 데이터를 뽑는게 이렇게 힘들것이라고 이번에 처음 느꼈습니다.※ 가능하면 2번 다시 하고 싶지 않음 이제 이름별로 해서 가동률을 한번 뽑아보도록 하겠습니다. MySQL에서 다음의 쿼리문들 사용하였습니다. 위의 화면에 필요한 부분이 아래의 Query 입니다. 보기보다 쉽죠? 만들어 내는대는 하루지만 정리해 놓고 보면은 쉽게 보여집니다. // 이름별 가동율 SELECT A.MACHINE_NAME, CAST(IFNULL(B.MACHINE_PCNT, 0) AS UNSIGNED ) AS MACHINE_PRODUCT_CNT, MIN(C.MACHINE_DATETIME_MIN) AS MACHINE_TIME_MIN, MAX(C.MACHINE_DATETIME_MAX) AS MACHINE_TIME_MAX, CAST(IFNULL(C.USE_TIME, '0') AS UNSIGNED ) AS USE_TIME, CAST(IFNULL(E.USE_TIME_STOP, '0') AS…
Read More

MongoDB 백업 & 복원

Database
어느 업체에서 MongoDB를 사용하는데, 해당 DB에서 필요한 자료를 가져와서 정보를 가공해서 보여줘야 하는 사항입니다. 그대로 복사한다고해서 그대로 사용을 할수가 없어서 찾아보게 된 자료입니다. ## MongoDB 백업 mongodump.exe --out .\backup\ --host 127.0.0.1 --port 27017 -uadmin1234 -p1234 --db "데이타베이스" ## MongoDB 복원 mongorestore.exe --host localhost --port 27017 -d"데이타베이스" -uadmin1234 -p1234 --drop "백업디렉토리" 위에 DB를 백업 & 복원을 통해서 C# Applicaiont을 통해서 자료를 조회한다음에 MySQL로 이전하는 작업입니다. MongoDB자체가 RDBMS가 아니라서 가져오는데 애를 먹었지만, 일단 2주간의 노력으로 일단은 만들게 되었습니다.
Read More

MySQL 트리거를 통해서 프로시저의 동적 쿼리 실행

Database
결론부터 말하면은 대실패 입니다. 의도한대로 전혀 움직이지 않습니다. 그렇기에 MySQL에서는 절대 하지 마십시오. 물론 다른 DBMS인 오라클, MSSQL은 어떤지 아직 직접해보지 않아서 정확히는 모릅니다. 하지만 제가 테스트한 MySQL에서는 전혀 실행이 되지 않습니다. 실패라고 하여도 과정에 대해서 일단 간단히 작성해 놓고 추후에 이런 일이 있으면 교본을 삼으려고 글을 남깁니다. 요구조건1. INSERT 시에 해당 값을 trigger를 통해서 다른 테이블에 기록2. 다른테이블 기록은 '테이블이름_년월' 형식에 기록해서 추후에 관리 용이3. 값이 없는 부분은 가공해서 넣기 어떻게 보면은 정말 간단한 요구사항입니다. trigger의 INSERT시에 캐치해서 월별로 관리하는 Table에 Insert 하는 부분입니다. 물론 이 외에 될수도 있지만 현재로서는 실패 입니다. DROP TRIGGER IF EXISTS `TRIGGER_TEST`; DELIMITER // CREATE TRIGGER `TRIGGER_TEST` AFTER INSERT ON `TRIGGER_TEST_RAW` FOR EACH ROW BEGIN -- 선언 DECLARE Access_Time VARCHAR(20); DECLARE Ip_From VARCHAR(20); DECLARE Status_From VARCHAR(20); DECLARE Work_Rate VARCHAR(10); DECLARE OrgMessageFrom VARCHAR(80); -- 값…
Read More

Ubuntu 서버에서 Gitlab 제거

Linux
정말 간단한 내용입니다. Ubuntu 서버에 설치를 하고 나서 지우려고 보니 명령어를 모아 놓은곳이 없어서 일단 정리해를 해 놓습니다. sudo gitlab-ctl cleanse sudo gitlab-ctl uninstall sudo apt remove gitlab-ee sudo apt purge gitlab-ee 별 다른 내용은 없지만 필요하신분이 저처럼 있을 거라고 생각해서 짧게나마 정리를 해 놓습니다.
Read More

SCP 복사

Linux
SCP 복사 기능을 정말 가끔 사용할일이 있는데, 매번 깜빡하고 다시 검색을 해보는 일이 있어서 이렇게 정리를 합니다. scp -i "인증파일경로" -r "복사할파일" ubuntu@ServerIP:"대상경로" 별 다른 내용은 없으며, 해당 기능을 통해서 중간에 내컴퓨터를 경우하지 않아도 이제 복사를 할 수 있다는 생각에 정리를 해 놓는 것입니다.
Read More
Asterisk에서 인입콜 취득

Asterisk에서 인입콜 취득

CSharp
Asterisk IP-PBX 교환기를 사용하고 있는분께서 모든 전화를 받을수 없으셔서 인입되는 모든 Call 정보를 획득하는 방법을 문의 하셨고 만들게 되었습니다. 부가적인 기능으로 인입되는 DID 번호에 따라서 메모를 기록하고, SMS/LMS를 보내는 기능까지 함께 합쳐서 만들어진 기능입니다. 이렇게 하면서 상담원이 늘어나면서 이제 상담원에 대한 인증기능을 붙이게 되었으며, 발신번호를 변경가능하게 만들어지게 되었습니다. 정보를 취득후 서버에서 관리할수 있도록 하는 기록 서버가 있어서 모든 기록이 365일 24시간 계속 기록됩니다.
Read More

윈도우 응용프로그램에 전자서명을 해야 될듯…

CSharp
가끔식 주변분들에게 윈도우 응용프로그램을 만들어 드리는편입니다. 이전에는 그냥 배포라는 생각이 없어서 전자서명을 할 생각이 없었지만 조금씩 숫자가 늘어나면서 생각을 바뀌야 될듯 합니다. 공식적으로 불특정 다수에게 공개해서 사용하도록 하는 일을 만들지 않으려고 하는편입니다. 사용하는 기술이 한발을 잘못 디디면은 불법이라는 형식으로 갈 수 있어서 그렇게 좋은 형태는 아닙니다. 하지만, 프로그램이라는것은 사용하시는분이 불편해서 만들어 달라는것이지, 사용할 일이 없으면은 절대 만들 이유가 없다고 보기에 만들어 드리는 편입니다. 이렇게 만든게 시간이 조금씩 흐르니 하나하나 쌓여서 이제 몇개가 사용되는 편입니다. 그렇다 보니깐 이제 전자서명을 해서 윈도우에서 사용하는데 불편함을 조금 들어 드리기 위해서 해야 된다고 생각을 합니다. 업데이트 문제도 있고해서 짧지는 않지만 장기간을 보고 하다 보면은 언젠가 Microsoft에서도 크게 문제가 없다고 인정해주지 않을가 싶어서 전자 서명을 시도합니다. 사설 전자서명이라서 기간이 2040년까지 인데 앞으로 20년을 제가 이 일을 할지 여부를 알 수 없기에 기간은 넉넉하다도 보여져서 만들어서 사용하는…
Read More

오랜만에 테마 변경….

일상
오랜만에 테마를 변경하였습니다. 평소에도 테마를 관심을 두지 않지만은 기분상 한번 변경해 볼 시기인것 같아서 변경을 해 보았습니다. 테마를 변경할 기술을 가지고 있다고 생각하지만 절~대적으로 기술을 사용하지 않는 형편입니다.  원래 자기것은 잘 하지 않게 되더라고요...... 테마를 변경하면서 서버를 한번 정리를 하였습니다. 그동안 미뤄두었던 일들이 조금 있어서 살짝 정리를 하는겸을 해서 처리를 하여서 현재는 다시 제 기준으로 쾌적하게 돌아가는 편입니다.
Read More

우분트 자동시작서비스 등록 실행하기

Linux
해당 기록은 제 개인적으로 기록을 해 놓은 부분입니다. 누군가에게 도움이 될수도 있지만 아마 전혀 쓸모가 없을수도 있습니다. 그렇기에 개인 기록이라는 점을 먼저 밝힙니다. crontab으로 실행하는것에 한개가 있습니다. 재부팅 되면서 실행을 해도 되고, 일정 시간을 체크해서 해도 되지만, 항상 가동해야 되는 부분이 있어서 만들게 된 부분입니다. cp /home/ubuntu/service/serviceCrawer.service /etc/systemd/systemd --------------- [Unit] Description=ServiceCrawer-1 After=network.target [Service] ExecStart=/usr/bin/php /home/ubuntu/service/service.file start ExecStop=/bin/sh /home/ubuntu/service/stop.sh Restart=on-failure [Install] WantedBy=multi-user.target ------------------ sudo chmod 644 serviceCrawer.service sudo systemctl daemon-reload sudo systemctl enable serviceCrawer.service sudo systemctl start serviceCrawer.service sudo systemctl disable serviceCrawer.service 일단 네트워크가 문제가 생기면은 재시작을 할 것이고 아니면은 항시 기동이 되도록 프로그램을 만들었습니다. 통신을 하는 부분이라서 네트워크가 죽으면 살아있어도 쓸모가 없습니다. 항상 정보를 수집하는 부분에서 일정시간마다 아닌, 실시간으로 통신을 해서 정보를 획득하기에 끊기지 않는다는것이 제일 관점있고, 그 이후 데이터를 잘 기록해야되는 부분입니다. 위에 코드는 그냥 서비스에 등록하는 부분만 있습니다.…
Read More