9/07/2018

Ubuntu :: Ubuntu Bash Shell Script Get Data From Other Server By ssh.

Ubuntu :: Ubuntu Bash Shell Script Get Data From Other Server By ssh.
1. Install sshpass สำหรับ Run คำสั่ง ssh แบบใส่รหัสในคำสั่ง
  1. apt-get install sshpass


2. ตัวอย่าง Code อ่านค่าพื้นที่ HDD สร้าง script.sh
  1. nano script.sh

Insert Code
  1. #!/bin/bash
  2. sshpass -p 'PASSWORD' ssh user@IPSERVER REMOTE 'df -h /dev/sda1 &> /home/sa/output.txt'

ได้ไฟล์ Text ไปใช้งานต่อ

3. อ่านขนาดไฟล์จากเครื่อง QNAP
  1. #!/bin/bash
  2. sshpass -p 'PASSWORD' ssh user@IP QNAP 'cd /share/CACHEDEV1_DATA/backup/; ls -lah *.gz > output.txt'

ได้ข้อมูลใน File Text ไปใช้งานต่อ

หรือตั้ง Crontab ที่ QNAP หรือ Server เครื่องอื่น ๆ ให้ส่งค่าไป
  1. #!/bin/bash
  2. Days=`date +%Y%m%d`;
  3.  
  4. cd /share/CACHEDEV1_DATA/backup/
  5. rm *output.txt
  6. ls -s -h *.gz > $Days.output.txt
  7. scp $Days.output.txt sa@192.168.2.101:/www/intranet/sci/CheckServer/
  8. mkdir $Days
  9. mv *.gz $Days


  1. crontab -e
  1. 0 6 * * * bash /share/CACHEDEV1_DATA/backup/CheckFile.sh


4. SCP จาก Qnap ไปที่ Intranet แบบไม่ต้องใส่รหัส Set authorized_keys
https://intranet.sci.com/blog.php?u=3&b=961
ทำที่ User admin ได้เลย แล้วเอาคีย์ของ adminไป authorized_keys ที่เครื่อง intranet

5. อ่านค่าและส่งค่าไฟล์ Text ไปที่เครื่อง Intranet เพื่อตัดหรือแบ่งนำเข้า PHPmyadmin
php อ่านค่า จาก txt แล้ว นำเข้า DB
  1. <?php
  2. ob_start();
  3. error_reporting (E_ALL ^ E_NOTICE);
  4. header("Cache-Control: no-cache, must-revalidate");
  5. ////////////////////////////////////////////////////
  6. define('IN_PHPBB', true);
  7. $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../../';
  8. $phpEx = substr(strrchr(__FILE__, '.'), 1);
  9. include($phpbb_root_path . 'common.' . $phpEx);
  10. ////////////////////////////////////////////////////
  11. // Start session management
  12. $user->session_begin();
  13. $auth->acl($user->data);
  14. $user->setup();
  15. ////////////////////////////////////////////////////
  16. include($phpbb_root_path ."sci/include/config.php");
  17. include($phpbb_root_path ."sci/include/db.php");
  18. include($phpbb_root_path ."sci/include/functions.php");
  19. ////////////////////////////////////////////////////
  20. $EmpID  = ldapEmpId($user->data['username']);
  21.  
  22. $myDB   = new MysqlDB($Host,$User,$Password,$DB,$ShowError);
  23. $SQL ="SELECT * FROM sci._employees ";
  24. $SQL.=" LEFT JOIN sci._positions ON sci._positions.PositionCode=sci._employees.PositionCode";
  25. $SQL.=" LEFT JOIN sci._sections ON sci._sections.SectionId=sci._positions.SectionId";
  26. $SQL.=" WHERE sci._employees.EmpID='".$EmpID."'";
  27. $NumRows    = $myDB->Query($SQL);
  28. $Row        = $myDB->GetRow();
  29.  
  30. $EmpSection = tis2utf8($Row["SectionCalled"]);
  31.  
  32. if($EmpSection != "งทส.") {  
  33.     echo js_alert(tis2utf8("Menu นี้เข้าใช้งานได้เฉพาะ งทส."));
  34.     echo js_close();
  35.     exit;
  36. }
  37. $DateFileName = date("Ymd");
  38. $DateNowInsert = date("Y-m-d");
  39. //Check File
  40. if($myFile = fopen($DateFileName.".output.txt", "r")) {
  41.  
  42.     //Output one line until end-of-file
  43.     while(!feof($myFile)) {
  44.         //echo fgets($myFile) . "<br>";
  45.         list($Size, $Name) = split(" ", trim(fgets($myFile)));   
  46.        echo $Size."::".$Name."<br>";
  47.        
  48.         if(preg_match('/alfresco_file/', $Name)) {  
  49.             echo "Alfresco File"."|".$Size."<br>";
  50.             $AlfrescoFile = $Size;
  51.         } elseif(preg_match('/alfresco_db/', $Name)){
  52.             echo "Alfresco DB"."|".$Size."<br>";   
  53.             $AlfrescoDB = $Size;
  54.         } elseif(preg_match('/Intranet_file/', $Name)){
  55.             echo "Intranet File"."|".$Size."<br>"
  56.             $IntranetFile = $Size;
  57.         } elseif(preg_match('/Intranet_db/', $Name)){
  58.             echo "Intranet DB"."|".$Size."<br>";   
  59.             $IntranetDB = $Size;
  60.         }            
  61.  
  62.         }//Close if.
  63.  
  64.     }//Close While.
  65.    
  66.     //Insert Data To Table
  67.     $SQL_UP = " INSERT INTO sci_CheckServer.CheckData (CheckDate ,AlfrescoFile, AlfrescoDB, IntranetFile, IntranetDB)";
  68.     $SQL_UP .= " VALUES ('$DateNowInsert', '$AlfrescoFile', '$AlfrescoDB', '$IntranetFile', '$IntranetDB')";
  69.     $myDB->Update(utf2tis($SQL_UP));
  70.                    
  71.     //Close open file.
  72.     //fclose($myfile);
  73.     //Delete File.
  74.            
  75. } else {
  76.     echo js_alert("Unable to open file!")
  77. }
  78.  
  79. ob_end_flush();
  80. ?>


6. Select ค่าจาก PHP แสดงหน้า Web ตามที่ต้องการ

Axapta :: Axapta Finde Onhand Of Item As Of Date

Axapta :: Axapta Finde Onhand Of Item As Of Date

  1.    InventSumFinancial      inventSumFinancial;
  2.     InventDimParm           inventDimParm;
  3.     InventDim               inventDim;
  4. ;
  5.  
  6.     //Set Dimensions.
  7.     inventDimParm.InventLocationIdFlag  =  NoYes::No;
  8.     inventDimParm.WMSLocationIdFlag     =  NoYes::No;
  9.     inventDimParm.WMSPalletIdFlag       =  NoYes::No;
  10.     inventDimParm.InventBatchIdFlag     =  NoYes::No;
  11.     inventDimParm.InventSerialIdFlag    =  NoYes::No;
  12.     inventDimParm.ConfigIdFlag          =  NoYes::No;
  13.     inventDimParm.ItemIdFlag            =  NoYes::No;
  14.     inventDimParm.ClosedFlag            =  NoYes::No;
  15.     inventDimParm.InventColorIdFlag     =  NoYes::No;
  16.     inventDimParm.InventSizeIdFlag      =  NoYes::No;
  17.  
  18. inventSumFinancial = new InventSumFinancial(str2date(strfmt("31/12/%1", YearText -1), 123), ItemIdSelect, inventDim, inventDimParm);
  19. info(inventSumFinancial.qty());

8/17/2018

Home Assistant :: Home Assistant Send Mail Gmail SMTP

Home Assistant :: Home Assistant Send Mail Gmail SMTP
1. Config configuration.yaml
  1. cd /home/homeassistant/.homeassistant
  1. nano configuration.yaml


2. Insert code notification and set Gmail user password
  1. notify:
  2.   - name: "SendMail"
  3.     platform: smtp
  4.     server: smtp.gmail.com
  5.     port: 587
  6.     timeout: 15
  7.     sender: scivalve.suwit@gmail.com
  8.     encryption: starttls
  9.     username: scivalve.suwit@gmail.com
  10.     password: Password Gmail
  11.     recipient:
  12.       - suwit.jph@gmail.com
  13.       - komkid@gmail.com
  14.       - seksan.kamt56@gmail.com
  15.     sender_name: My Home Assistant
  16.  


3. Test Send mail select service menu and select service we create on stab 2.
insert Service Data Optional And click CALL SERVICE check mail.
  1. {"message":"Test mail"}

4. Set Automation for send mail when track device ping down.
  1. nano automations.yaml

Add this code.
  1. - id: '1534491838266'
  2.   alias: CheckPingDown
  3.   trigger:
  4.   - entity_id: device_tracker.sonoff
  5.     platform: state
  6.   condition:
  7.   - after: '8:00'
  8.     before: '18:00'
  9.     condition: time
  10.   - condition: state
  11.     entity_id: device_tracker.sonoff
  12.     state: not_home
  13.   action:
  14.   - data:
  15.       message: Can't connect sonoff Garden. Please Check WIFI Or Sonoff.
  16.     service: notify.sendmail


https://www.home-assistant.io/components/notify.smtp/

Firefox :: Firefox ถามรหัส Proxy บ่อย ๆ

Firefox :: Firefox ถามรหัส Proxy บ่อย ๆ ใส่ไปแล้วสักพักขึ้นมาถามอีก ทั้ง ๆ ที่ใส่ Username และ Password ถูก
https://kb.globalscape.com/KnowledgebaseArticle10522.aspx

Firefox repeatedly prompts for proxy authentication

THE INFORMATION IN THIS ARTICLE APPLIES TO:
EFT Server (All versions)

SYMPTOM
When using Firefox through an ISA server, Firefox repeatedly prompts for proxy authentication, even though the correct credentials have been entered and applied.

RESOLUTION

To resolve this issue:

1. Open Firefox.
2. In the address bar, type about:config. A warning appears.

3. Click I'll be careful. I promise! A variety of configuration options appears.
4. In the Filter box, type network.negotiate.
5. Double-click network.negotiate-auth.allow-proxies to toggle between true and false. The option must be set to false. (It seems counterintuitive, but you set it to false to make it work with the ISA proxy.)

6. Click the Home icon to close the configuration window.

Pi-Hole :: Pi-hole Update Version

Pi-Hole :: Pi-hole Update Version
1. Back Up Snapshots On Vmware
2. Run Command
  1. pihole -up




8/15/2018

Ubuntu :: Ubuntu set track ping to other host. For check online or down.

Ubuntu :: Ubuntu set track ping to other host. For check online or down.
Use php and bash shell run crontab. On Ubuntu 18.04
1. Install software.
  1. sudo apt-get install apache2

  1. sudo apt install php libapache2-mod-php

  1. sudo apt-get install ssmtp mailutils mpack


2. Set timezone.
List
  1. timedatectl list-timezones

Set
  1. timedatectl set-timezone Asia/Bangkok


3. Create file php.
  1. nano /var/www/check-sonoff.php

insert code
  1.  
  2. <?php
  3. $strDateTime = date("Y-m-d H:i:s");
  4.  
  5. $strToPost = "\nFrom Home Assistan : {$strDateTime} \n";
  6. $ret = mail("komkid@gmail.com,suwit.jph@gmail.com,seksan.kamt56@gmail.com", "Internet Test Speed is low. Please Check Internet Connection.", $strToPost, "From: Proxy Server\n");$
  7. //$ret = mail("suwit.jph@gmail.com", "Can't connect sonoff Garden. Please Check WIFI Or Sonoff.", $strToPost, "From: Home Assistan \n");
  8.  
  9. ?>


4. Config send mail.
backup original file.
  1. cp /etc/ssmtp/ssmtp.conf ssmtp.conf.backup
  1. nano /etc/ssmtp/ssmtp.conf

replace all code.
  1. #
  2. # Config file for sSMTP sendmail
  3. #
  4. # The person who gets all mail for userids < 1000
  5. # Make this empty to disable rewriting.
  6. #root=postmaster
  7. root=scivalve.suwit@gmail.com
  8.  
  9. # The place where the mail goes. The actual machine name is required no
  10. # MX records are consulted. Commonly mailhosts are named mail.domain.com
  11. mailhub=mail
  12. mailhub=smtp.gmail.com:587
  13.  
  14. # Where will the mail seem to come from?
  15. #rewriteDomain=
  16.  
  17. # The full hostname
  18. #hostname=scivalve.suwit@gmail.com
  19. hostname=localhost
  20.  
  21. # Are users allowed to set their own From: address?
  22. # YES - Allow the user to specify their own From: address
  23. # NO - Use the system generated From: address
  24. #FromLineOverride=YES
  25.  
  26. AuthUser=MAIL GMAIL
  27. AuthPass=PASSWORD
  28. useSTARTTLS=YES
  29.  
  30. TLS_CA_File=/etc/ssl/certs/ca-certificates.crt


5. Test send mail.
  1. /usr/bin/php /var/www/check-sonoff.php


6. Create file for check ping to other server.
  1. nano check-sonoff.sh

insert code.
  1. #!/bin/bash
  2. SERVERIP=192.168.0.210
  3.  
  4. ping -c 3 $SERVERIP > /dev/null 2>&1
  5. if [ $? -ne 0 ]
  6. then
  7.    # Call php file send mail here:
  8.    /usr/bin/php /var/www/check-sonoff.php
  9. fi


7. Test sell.
  1. bash check-sonoff.sh


8. Set crontab. run bash file.
  1. #Check Ping Sonoff Every 1 Hours
  2. 0 8-18 * * 1-6 bash /check-sonoff.sh


https://unix.stackexchange.com/questions/56340/bash-script-to-detect-when-my-server-is-down-or-offline
https://askubuntu.com/questions/3375/how-to-change-time-zone-settings-from-the-command-line

Ubuntu :: PDFSam On Mint 19

Ubuntu :: PDFSam On Mint 19
1. ติดตั้ง PDFSam จาก Software Manager (ติดตั้งเสร็จจะ Run ไม่ได้) เพราะ ยังไม่ได้ติดตั้ง JAVA
ติดตั้งผ่านคำสั่งไม่ได้ ERROR Download File ไม่ได้
  1. apt-get install oracle-java8-installer

ต้องติดตั้งเอง Manual
2. Download java จาก เป็นตัว Ubuntu Linux x64
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
หรือ
\\datacenter\Software\#Freeware\Framework\Java8
ได้ไฟล์ jdk-8u181-linux-x64.tar.gz มา
3. Extract file
  1. [code]tar -zxvf jdk-8u181-linux-x64.tar.gz[/code]

4. Create folder.
  1. mkdir -p /opt/java

5. Move file to folder /opt/java
  1. mv jdk1.8.0_181/ /opt/java

6. Install Java
  1. update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.8.0_181/bin/java" 1

7. Make JDK system default.
update-alternatives --set java /opt/java/jdk1.8.0_181/bin/java
8. Test installed java version. Show this.
  1. java -version

java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

9. Test open PDFSam worked.

This Link:
https://community.linuxmint.com/tutorial/view/1372

Axapta :: Axapta เลือกข้อมูลหน้า Onhand หลาย ๆ แถว จาก InventSum หลาย ๆ แถว

Axapta :: Axapta เลือกข้อมูลหน้า Onhand หลาย ๆ แถว จาก InventSum หลาย ๆ แถว
Form อื่น Table อื่นเดิมใช้ Code แบบนี้แต่ใช้ กับ InventSum แล้วไม่ออกได้แถวเดียวบรรทัดสุดท้ายที่เลือก
  1.    InventSum               myInventSum;
  2.     ;
  3.     for (myInventSum = InventSum_ds.getFirst(true) ? InventSum_ds.getFirst(true) : InventSum_ds.cursor();
  4.          myInventSum;
  5.          myInventSum = InventSum_ds.getNext())
  6.     {
  7.         print myInventSum.ItemId;
  8.     }


Code ที่ใช้งานได้กับ Form Onhand InventSum กรณีต้องการ Select หลาย ๆ Item แล้วนำ Item ไปใช้งานต่อ
  1.    InventSum               myInventSum;
  2.     Common                  inventSumCommon;
  3.     ;
  4.     for(inventSumCommon = InventSum_ds.getFirst(1).TableId != tablenum(Common) ?
  5.         InventSum_ds.getFirst(1) : InventSum_ds.cursor();
  6.         inventSumCommon.TableId != tablenum(Common);
  7.         inventSumCommon = InventSum_ds.getNext())
  8.     {
  9.         myInventSum = inventSumCommon;
  10.         print myInventSum.ItemId;
  11.     }



https://axapta.mazzy.ru/forums/showthread.php?p=65533

7/03/2018

Windows 10 : Windows 10 ดูด Driver ไปใช้งาน

Windows 10 : Windows 10 ดูด Driver ไปใช้งาน
เช่น Driver Printer Kyocera KM-2050 KX ที่ Update มากับ Windows 10 ใหม่แล้ว Printer ข้อมูลออกจาก Axapta ไม่ได้ Error
ต้องใช้ วิธีนี้นำ Driver จากเครื่องที่ใช้ได้ไปใส่เครื่องใหม่
ต้องใช้ Driver ตัวเดิม
1.เปิดการทำงาน command prompt Run ด้วยสิทธิ์ Admin
2. สร้าง Folder ไว้เก็บไฟล์ Driver เช่น D:\MyDrivers หรือที่ไหนก็ได้แล้วแต่เรา
3. พิมพ์คำสั่งใน command prompt ตามด้วย Path ที่จะเก็บไฟล์ในข้อ 2.
  1. dism /online /export-driver /destination:D:\MyDrivers

รอจนกว่าจะเสร็จ

4. ได้ Driver ที่ต้องการ นำไปใช้งาน

5. อ่านอยากไม่รู้ว่า Folder ไหน Driver อะไร ใช้โปรแกรม DriverStore Explorer ช่วย ก็จะพอเดาได้ว่า Driver ไหนใช้กับอะไร
โหลด https://github.com/lostindark/DriverStoreExplorer/releases/tag/v0.9.10

https://notebookspec.com/backup-drivers-before-reinstalling-windows-10-using-dism/351312/

6/27/2018

Pfsense : Pfsense Create User VPN and CA User Certificates

Pfsense : Pfsense Create User VPN and CA User Certificates
1. เข้า Pfsense
สร้าง User เข้าไปที่ Menu System ---> User Manager
Add user ที่ต้องการ

2. สร้าง CA
กด Add ตรง User Certificates
เลือก Method เป็น Create an internal Certificate
ใส่ Common Name เป็นชื่อที่สร้างขึ้น เช่น seksan_k
กด Save จะได้ CA มาที่ชื่อ
ตั้งรหัส ให้เรียบร้อย แล้วกด Save

3. Export ชื่อและโปรแกรมเพื่อนำไปใช้งาน
ที่ Menu VPN ---> Open VPN ที่ Tab Client Export
เลื่อนมาด้านล่างจะพบชื่อที่สร้างขึ้น
เลือก Export โปรแกรมที่จะนำไปใช้งาน

Install Nextcloud on Ubuntu 18.04

Install Nextcloud on Ubuntu 18.04
1. Install Ubuntu 18.04 Server

2. Edit apt.conf
  1. nano /etc/apt/apt.conf

Insert this code
Acquire::http { Proxy "http://192.168.2.106:9999"; };

And
  1. apt-get update
  2. apt-get upgrade
  3. locale-gen en_US en_US.UTF-8 th_TH th_TH.UTF-8


3. Install software
  1. add-apt-repository ppa:ondrej/php

  1. apt-get update

  1. apt-get install php7.0 php7.0-mysql php7.0-curl php7.0-json php7.0-cgi libapache2-mod-php7.0 php7.0-mcrypt php7.0-xmlrpc php7.0-gd php7.0-mbstring php7.0  php7.0-common  php7.0-xmlrpc php7.0-soap  php7.0-xml php7.0-intl  php7.0-cli  php7.0-ldap php7.0-zip php7.0-readline php7.0-imap php7.0-tidy php7.0-recode php7.0-sq php7.0-intl php7.0-intl php7.0-mcrypt php-imagick php7.0-xml php7.0-zip


4. Download software Nextcloud https://download.nextcloud.com/server/releases/ Today version is 13.0.4
  1. wget https://download.nextcloud.com/server/releases/nextcloud-13.0.4.zip


5. Install unzip software
  1. apt-get install unzip

Unzip file.
  1. unzip  nextcloud-13.0.4.zip

Move file to www
  1. mv nextcloud /var/www/

Chown and Chmod
  1. chown -R www-data.www-data nextcloud
  2. chmod -R 775 nextcloud/


6. Edit root document apache.
  1. nano /etc/apache2/sites-available/000-default.conf

Edit
DocumentRoot /var/www/nextcloud

And
  1. a2enmod rewrite
  2. systemctl restart apache2


7. Create folder for save all DATA
  1. mkdir /DATA
  2. chown -R www-data.www-data /DATA/
  3. chmod -R 770 /DATA/


8. Test login to web
192.168.2.112 IP Or nextcloud.sci.com
Test login admin create user error
Error
Error while trying to create admin user: Failed to connect to the database: An exception occured in driver: SQLSTATE[HY000] [2002] No such file or directory



9. Install and setting mariadb
  1. sudo apt-get install mariadb-server mariadb-client

  1. sudo systemctl start mariadb
  2. sudo systemctl enable mariadb


10. Config mariadb password
  1. sudo mysql_secure_installation

Enter
- Insert password db 2 time.
- and Y 5 time.
  1. mariadb

Create user and database.
  1. create user NEXTCLOUDUSER@localhost identified by 'PASSWORD';
  2. create database NEXTCLOUD_DB_NAME;
  3. grant all privileges on NEXTCLOUD_DB_NAME.* to NEXTCLOUDUSER@localhost identified by 'PASSWORD';
  4. flush privileges;
  5. exit;


8. Test login to web
192.168.2.112 IP Or nextcloud.sci.com
Insert admin user and password
Insert path Data on number 7.
Insert user password mariadb on number 10.
And click finish setup button.

Finish Show Login Admin NextCloud.

This way link.
https://www.linuxhelp.com/how-to-install-nextcloud-13-on-ubuntu-18-04/
https://www.techrepublic.com/article/how-to-install-nextcloud-13-on-ubuntu-18-04/
https://www.linuxbabe.com/ubuntu/install-nextcloud-ubuntu-18-04-nginx-lemp



Config Ldap เพื่อให้ใช้ชื่อจาก AD ได้
1. ติดตั้ง Ldap
  1. apt-get install php7.0-ldap
  1. /etc/init.d/apache2 restart

reboot เครื่อง Server ถ้าไม่ reboot LDAP user and group backend จะไม่สามารถ Enable ได้

2. เข้า User ที่เป็น Admin
เพื่อ Enable : LDAP user and group backend

3. Config Ldap ไปที่ Admin --> Setting --> LDAP/AD integration
4. Config


เพิ่มเติมเอาเฉพาะ User ที่เป็น Enable ใช้ค่านี้ที่ Ldap tap User
(&(|(objectclass=organizationalPerson))(|(memberof=CN=owncloud,OU=SCI,DC=SCI,DC=COM))(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))

https://intranet.sci.com/blog.php?u=3&b=1033

5. เข้า Admin --> User (รอสักพักถ้า Config ข้อ 4 ถูกต้องชื่อที่จะแสดงออกมา)

 Add Disk DATA
1. Add Disk On VMware
2. Formate และสร้าง Patition
https://intranet.sci.com/blog.php?u=281&b=1000
3. แก้ fstab mount Auto
https://intranet.sci.com/blog.php?u=3&b=632
4. เปลี่ยนชื่อ Folder /DATA เป็นชื่ออื่น
5. สร้าง Folder /DATA เปลี่ยน Owner และ สิทธ์ ให้เป็นเหมือน Folder เดิม
6. mount disk ใหม่ใส่ /DATA
7. move DATA จาก Folder เดิมไปใส่ Folder ใหม่
ไฟล์ .ocdata ต้องเอาไปด้วยไม่เอาไป จะ Error

เสร็จขั้นตอนการ Add Disk ใหม่

เปิดใช้งาน HTTPS
1. Run Command
  1. a2enmod ssl
  2. a2ensite default-ssl
  3. service apache2 reload
2. Edit File port 80 Redirect To HTTPS
  1. nano /etc/apache2/sites-available/000-default.conf
Edit
      #Redirect To HTTPS
ServerName nextcloud.sci.com
Redirect / https://nextcloud.sci.com/
ServerAdmin suwit@scivalve.com
3. Restart apache
  1. /etc/init.d/apache2 restart

เข้าใช้งาน ทั้งแบบ nextcloud.sci.com จะเข้าไปที่ https://nextcloud.sci.com

ให้เข้าจากข้างนอกได้ ด้วย .scivalve.com
ด้วยการ Forward Port
1. แก้ Host ข้างนอก DirectAdmin Login Page ด้วยสิทธิ์ Admin
เข้าไปที่ DNS Administration เลือก scivalve.com
เพิ่ม nextcloud A xxx.xxx.xxx.xxx (ip web server ที่ต้องการให้เข้า)
และ http://www.nextcloud A xxx.xxx.xxx.xx
(อันนี้ต้องรอจนกว่าข้างนอกจะรู้ว่า nextcloud.scivalve.com ใช้งานได้

2. แก้ Firewall Forward Port ที่ Pfsense
Firewall ---> NAT เพิ่ม ให้เข้าจาก IP ข้างนอก ไป 192.168.2.112:8880

ลองเข้าจากข้างนอกผ่าน Port 8880 ดู

3. Config App ที่ Smart phone ต้องใส่ https://netcloud.scivalve.com:8880
จะได้เข้าจากข้างนอกได้ เข้าจากข้างนอกก็เช่นกันต้องใช้ https://netcloud.scivalve.com:8880
แต่เข้าใน SCI สามารถ ใช้
https://netcloud.sci.com หรือ https://netcloud.scivalve.com ได้เลย

5/07/2018

MQTT : ส่งค่าจากเครื่อง Clients ไป MQTT Server

MQTT : ส่งค่าจากเครื่อง Clients ไป MQTT Server
1. ติดตั้ง
  1. apt install mosquitto-clients


2. ลองส่งข้อมูลไปที่ state_topic ที่ต้องการเช่น
  1. mosquitto_pub -h 192.168.2.200 -t "hass/speedtest" -m 210


3. Code ส่ง Python
  1.        import paho.mqtt.client as mqtt
  2.  
  3.         mqttc = mqtt.Client("python_pub")
  4.         mqttc.connect("192.168.2.200", 1883)
  5.         mqttc.publish("hass/speedtest", Value ที่จะส่งไป)
  6.         mqttc.loop(2) #timeout = 2s


ถ้ามี Error
  1. Traceback (most recent call last):
  2.   File "nettest.py", line 62, in <module>
  3.     test()
  4.   File "nettest.py", line 48, in test
  5.     import paho.mqtt.client as mqtt
  6. ImportError: No module named paho.mqtt.client


ต้อง Run คำสั่ง
  1. pip install paho-mqtt

5/03/2018

ติดตั้ง Home Assistant

Home Assistant : https://home-assistant.io
เป็นระบบสำหรับควบคุมและติดตามการทำงานของอุปกรณ์ภายในบ้านได้หลากหลายชนิด

ขั้นตอนการติดตั้ง : https://home-assistant.io/docs/installation/raspberry-pi/
1.ติดตั้ง Ubuntu Server (16.04)
2.ติดตั้ง Python virtual environment
  1. sudo add-apt-repository ppa:deadsnakes/ppa
  2. sudo apt-get update
  3. sudo apt-get install python3.6
  4. sudo apt-get install -y python3.6-venv python3.6-dev

3.สร้าง User สำหรับ Setup และ Run ระบบ
  1. sudo useradd -rm homeassistant
  2. cd /srv
  3. sudo mkdir homeassistant
  4. sudo chown homeassistant:homeassistant homeassistant

4.สร้าง Virtual Environment
  1. sudo su -s /bin/bash homeassistant
  2. cd /srv/homeassistant
  3. python3.6 -m venv .
  4. source bin/activate

5.ติดตั้ง pacakage เพิ่ม
  1. python3.6 -m pip install wheel

6.ติดตั้ง Home Assistant
  1. pip3 install homeassistant

7.สั่งให้ระบบทำงาน
  1. hass

8.เรียกใช้งานที่ port 8123
  1. ้http://homeassistant:8123


ตั้งค่าให้ทำงานตอน start
: https://home-assistant.io/docs/autostart/systemd/
  1. [Unit]
  2. Description=Home Assistant
  3. After=network-online.target
  4.  
  5. [Service]
  6. Type=simple
  7. User=%i
  8. ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"
  9.  
  10. [Install]
  11. WantedBy=multi-user.target

  1. sudo systemctl --system daemon-reload
  2. sudo systemctl enable home-assistant@homeassistant //disable
  3. sudo systemctl start home-assistant@homeassistant // stop : restart : status

  1. sudo journalctl -f -u home-assistant@homeassistant


Upgrade :
  1. sudo systemctl stop home-assistant@homeassistant
  2. sudo su -s /bin/bash homeassistant
  3. cd /srv/homeassistant
  4. source bin/activate
  5. python3.6 -m pip install --upgrade homeassistant
  6. sudo systemctl start home-assistant@homeassistant

Line Notify

Line เปิดให้บริการที่ชื่อว่า Line Notify ซึ่งทำให้สามารถส่งข้อความหาบุคคลหรือกลุ่มได้
1.สมัครใช้บริการที่ https://notify-bot.line.me/my/
2.สร้าง Token โดยตั้งชื่อซึ่งจะใช้เป็นชื่อผู้ส่งข้อความ และเลือกบุคคลหรือกลุ่มที่ต้องการส่งข้อความถึง แล้วคลิก ออก Token
3.นำ Token ไปเขียน code สำหรับส่งข้อความ เช่น
  1. <?php
  2. define('LINE_API',"https://notify-api.line.me/api/notify");
  3.  
  4. $token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //ใส่Token ที่copy เอาไว้
  5. //$str = "Hello"; //ข้อความที่ต้องการส่ง สูงสุด 1000 ตัวอักษร
  6. $str = $_GET["msg"];
  7.  
  8. $res = notify_message($str,$token);
  9. print_r($res);
  10. function notify_message($message,$token){
  11.  $queryData = array('message' => $message);
  12.  $queryData = http_build_query($queryData,'','&');
  13.  $headerOptions = array(
  14.          'http'=>array(
  15.             'method'=>'POST',
  16.             'header'=> "Content-Type: application/x-www-form-urlencoded\r\n"
  17.                       ."Authorization: Bearer ".$token."\r\n"
  18.                       ."Content-Length: ".strlen($queryData)."\r\n",
  19.             'content' => $queryData
  20.          ),
  21.  );
  22.  $context = stream_context_create($headerOptions);
  23.  $result = file_get_contents(LINE_API,FALSE,$context);
  24.  $res = json_decode($result);
  25.  return $res;
  26. }
  27. ?>

4.เพิ่ม Account ของ Line Notify เป็นสมาชิกในกลุ่มนั้น
5.เรียกใช้ code แล้วจะได้ json บอกผลลัพธ์มา

ตัวอย่างการใช้งาน :
6.แจ้งเตือนเมื่อมีการ login เข้า server (เพิ่ม code เข้าไปที่ .profile หรือ .bash_profile)
  1. curl -X POST -H 'Authorization: Bearer [xxxxxxxxxxxxxxxxxxx]' -F 'message=Somebody login to server' https://notify-api.line.me/api/notify

หรือ
  1. wget --no-check-certificate 'https://intranet.sci.com/sci/Line/notify.php?msg=Somebody%20login%20to%20Server'

หรือ
  1. curl --insecure 'https://intranet.sci.com/sci/Line/notify.php?msg=Somebody%20login%20to%20Server'

5/02/2018

Ubuntu :: Ubuntu 10.04 Error Update

Ubuntu :: Ubuntu 10.04 Error Update
  1. apt-get update

show error
Err http://th.archive.ubuntu.com lucid/main Packages
404 Not Found
Err http://th.archive.ubuntu.com lucid/restricted Packages
404 Not Found
Err http://th.archive.ubuntu.com lucid/main Sources
404 Not Found
Err http://th.archive.ubuntu.com lucid/restricted Sources
404 Not Found
Err http://th.archive.ubuntu.com lucid/universe Packages
404 Not Found
Err http://th.archive.ubuntu.com lucid/universe Sources
404 Not Found
Err http://th.archive.ubuntu.com lucid/multiverse Packages
404 Not Found
Err http://th.archive.ubuntu.com lucid/multiverse Sources
404 Not Found


Err http://security.ubuntu.com lucid-security/main Packages
404 Not Found
Err http://security.ubuntu.com lucid-security/restricted Packages
404 Not Found
Err http://security.ubuntu.com lucid-security/main Sources
404 Not Found
Err http://security.ubuntu.com lucid-security/restricted Sources
404 Not Found
Err http://security.ubuntu.com lucid-security/universe Packages
404 Not Found
Err http://security.ubuntu.com lucid-security/universe Sources
404 Not Found
Err http://security.ubuntu.com lucid-security/multiverse Packages
404 Not Found
Err http://security.ubuntu.com lucid-security/multiverse Sources
404 Not Found
W: Failed to fetch http://th.archive.ubuntu.com/ubuntu/dis ... ackages.gz 404 Not Found

W: Failed to fetch http://th.archive.ubuntu.com/ubuntu/dis ... ackages.gz 404 Not Found

W: Failed to fetch http://th.archive.ubuntu.com/ubuntu/dis ... Sources.gz 404 Not Found


วิธีแก้
1. backup ไฟล์ sources.list ไว้ก่อน อยู่ที่ /etc/apt/sources.list
2. ใช้คำสั่ง
  1. sudo sed -i.bak -r 's/(th.archive|security).ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list

3. ทดลอง update upgrade ดู

https://gist.github.com/dergachev/f5da514802fcbbb441a1
https://askubuntu.com/questions/805523/apt-get-update-for-ubuntu-10-04

4/28/2018

Vmware : Vmawre Esxi 6.5 status invalid ไม่สามารถลบปกติได้ ด้วยการคลิกขวา ลบ หรือ Unregister ได้

Vmware : Vmawre Esxi 6.5 status invalid ไม่สามารถลบปกติได้ ด้วยการคลิกขวา ลบ หรือ Unregister ได้
แก้โดย
vmware remove virtual machine status invalid by command
1. ssh เข้าเครื่อง Server Vmware ที่ Error
2. Stop vpxa and hostd service before edit คำสั่งนี้ Server อื่น ๆ ยังสามารถเข้าใช้งานได้ตามปกติ
  1. /etc/init.d/vpxa stop
  1. /etc/init.d/hostd stop

3. เข้าไปที่ /etc/vmware/hostd
  1. cd /etc/vmware/hostd

3. แก้ไฟล์ vmInventory.xml ด้วยคำสั่ง vi backup ไฟล์เดิมไว้ก่อนแก้ไขด้วย
  1. vi vmInventory.xml

4. หา Line ที่ Vm Error แล้วกด ลบ ด้วยการกด dd ลบทั้งบรรทัดออก
เช่น
  1.  <ConfigEntry id="0002">
  2.     <objID>3</objID>
  3.     <secDomain/>
  4.     <vmxCfgPath>/vmfs/volumes/590cca43-c78bd3ac-1234-000c2908a466/VMware vCenter Server Appliance/VMware vCenter Server Appliance.vmx</vmxCfgPath>
  5.   </ConfigEntry>

5. กด :wq เพื่อออกจาก จาก คำสั่ง vi
6. Start service vpxa and hostd service
  1. /etc/init.d/vpxa start
  1. /etc/init.d/hostd start

เสร็จแล้วลองเข้าดู Vm ที่ Error จะหายไป
https://communities.vmware.com/thread/582673
คำสั่ง vi เพิ่มเติม
http://thaiopensource.org/%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-vi-editor-%E0%B9%80%E0%B8%9A%E0%B8%B7%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%95%E0%B9%89%E0%B8%99/

4/26/2018

ATOM : เขียน Code arduino โดยใช้ ATOM

ATOM : เขียน Code arduino โดยใช้ ATOM
วิธีติดตั้ง
1. ติดตั้ง ATOM โดย Download
https://atom.io/
แล้วนำ .deb มาติดตั้งได้เลย

2. ติดตั้งเสร็จจะไม่มี Menu Build และ Upload ต้องติดตั้ง Package เพิ่ม
http://docs.platformio.org/en/latest/ide/atom.html#ii-clang-for-intelligent-code-completion
ใส่ platformio-ide ในช่องค้นหา แล้วกด Install
3. ติดตั้ง clang เพิ่ม
  1. apt-get install clang

เสร็จแล้วจะมี Menu PlatformIO ขึ้นมา สามารถ Build และ Upload Run Program ได้จาก Menu นี้

4/25/2018

PHP : PHP ใส่ข้อความหรือข้อมูลในรูป ในตำแหน่งที่ต้องการ

PHP : PHP ใส่ข้อความหรือข้อมูลในรูป ในตำแหน่งที่ต้องการ
ต้องใช้ CSS ช่วย
เช่น
Html
  1. <div class="container">
  2.   <img src="img_fjords_wide.jpg" alt="Norway" style="width:100%;">
  3.   <div class="bottom-left">Bottom Left</div>
  4.   <div class="top-left">Top Left</div>
  5.   <div class="top-right">Top Right</div>
  6.   <div class="bottom-right">Bottom Right</div>
  7.   <div class="centered">Centered</div>
  8. </div>
  9.  


CSS
  1. /* Container holding the image and the text */
  2. .container {
  3.     position: relative;
  4.     text-align: center;
  5.     color: white;
  6. }
  7.  
  8. /* Bottom left text */
  9. .bottom-left {
  10.     position: absolute;
  11.     bottom: 8px;
  12.     left: 16px;
  13. }
  14.  
  15. /* Top left text */
  16. .top-left {
  17.     position: absolute;
  18.     top: 8px;
  19.     left: 16px;
  20. }
  21.  
  22. /* Top right text */
  23. .top-right {
  24.     position: absolute;
  25.     top: 8px;
  26.     right: 16px;
  27. }
  28.  
  29. /* Bottom right text */
  30. .bottom-right {
  31.     position: absolute;
  32.     bottom: 8px;
  33.     right: 16px;
  34. }
  35.  
  36. /* Centered text */
  37. .centered {
  38.     position: absolute;
  39.     top: 50%;
  40.     left: 50%;
  41.     transform: translate(-50%, -50%);
  42. }

https://www.w3schools.com/howto/howto_css_image_text.asp
เช่น FlangeDimensions ของออกแบบ
Html
  1. <div class='container'>
  2.   <img src='FLAT.jpg' alt='FLAT FACE' width='100%'>
  3.   <div class='F_ODValue'>$OD</div>
  4.   <div class='F_OCValue'>$OC</div>
  5.   <div class='F_hValue'>$h</div>
  6.   <div class='F_nValue'>$n</div>
  7.   <div class='F_MValue'>$M</div>
  8. </div> ";


CSS
  1. /* Container holding the image and the text */
  2. .container {
  3.     position: relative;
  4.     text-align: center;
  5.     color: white;
  6. }
  7. /* FLAT FACE */
  8. .F_ODValue {
  9.     position: absolute;
  10.     top: 19%;
  11.     left: 37%;
  12. }
  13.  
  14. .F_OCValue {
  15.     position: absolute;
  16.     top: 28%;
  17.     left: 37%;
  18. }
  19.  
  20. .F_hValue {
  21.     position: absolute;
  22.     top: 66%;
  23.     left: 74%;
  24. }
  25.  
  26. .F_nValue {
  27.     position: absolute;
  28.     top: 72%;
  29.     left: 74%;
  30. }
  31.  
  32. .F_MValue {
  33.     position: absolute;
  34.     top: 79%;
  35.     left: 74%;
  36. }
  37.  
  38. /* RAISED FACE */
  39.  
  40. .R_ODValue {
  41.     position: absolute;
  42.     top: 11%;
  43.     left: 37%;
  44. }
  45.  
  46. .R_OCValue {
  47.     position: absolute;
  48.     top: 20%;
  49.     left: 37%;
  50. }
  51.  
  52. .R_OGValue {
  53.     position: absolute;
  54.     top: 28%;
  55.     left: 37%;
  56. }
  57.  
  58. .R_hValue {
  59.     position: absolute;
  60.     top: 66%;
  61.     left: 74%;
  62. }
  63.  
  64. .R_nValue {
  65.     position: absolute;
  66.     top: 72%;
  67.     left: 74%;
  68. }
  69.  
  70. .R_MValue {
  71.     position: absolute;
  72.     top: 79%;
  73.     left: 74%;
  74. }

Phpmyadmin : เปลี่ยนรหัส User ที่ใช้ Login Phpmyadmin

Phpmyadmin : เปลี่ยนรหัส User ที่ใช้ Login Phpmyadmin

1. เข้าไปที่ Database mysql เลือก Table User จะพบ User เลือก User ที่ต้องการแล้วกด Edit
2. เปลี่ยน Password ให้เป็น Password แล้วใส่รหัสที่ต้องการ
3. คลิกที่ Home แล้วเลือก More settings
4. ที่ Tab User เลือก reload the privileges ทดลอง Login ด้วย รหัสใหม่