How to change MAC address on Mikrotik Routerboard

By default changing MAC address of ethernet interface in Mikrotik Winbox is disabled:

But You can very simple change MAC in terminal.
In left side menu select New Terminal:

Then enter command:

/interface ethernet set ether1 mac-address=XX:XX:XX:XX:XX:XX

Where ether1 is required interface and XX:XX:XX:XX:XX:XX is new MAC address of your device.

Thats all.

Create Shortcut for Windows program in Ubuntu

  1. Download png icon of your program from Internet.
  2. Create file name.desktop and insert next code:
[Desktop Entry]
Name=ProgramName
Exec=wine "/home/user/Programs/ProgramName/ProgramName.exe"
Icon=/home/user/Programs/ProgramName/ProgramName.png
Type=Application
Categories=Wine;
Name[en_US]=ProgramName

Change text “ProgramName” to name of your program.

Finally change permission for execution this file. That’s all. See the video:

Create React js application with Yarn

Very simple way to create new application on React JS using Yarn.

First of all install LTS version of Node.js on your computer from official site: https://nodejs.org/en/download/

Then also install stable version of Yarn from official site: https://yarnpkg.com/en/docs/install. (You can read here how to install Yarn in Ubuntu).

Next lets create new folder “react-app” with files of our application. In this folder create two empty files: index.html, package.json, and subfolder src such as on screenshot:

File index.html will have basic html markup:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>React App</title>
</head>
<body>
    <noscript>
        You need to enable JavaScript to run this app.
    </noscript>

    <div id="root"></div>

    <!-- Bundle -->
    <script src="./src/index.js"></script>
</body>
</html>

In subfolder src create file index.js, it will be main file of our react application:

Source code of index.js file:

import React from 'react';
import ReactDOM from 'react-dom';

const App = () => (
    <div>
        React App
    </div>
);
ReactDOM.render(<App />, document.getElementById('root'))

In file package.json write next code:

{
    "name": "ReactApp",
    "author": "Author Name",
    "license": "License Name",
    "homepage": "Author Website",
    "email": "Author Email",
    "version": "1.0.0",
    "scripts": {
      "start": "cross-env NODE_ENV=development parcel index.html --no-cache -d build/dev",
      "build": "cross-env NODE_ENV=production parcel build index.html --no-cache -d build/production"
    },
    "dependencies": {
      "@hot-loader/react-dom": "^16.8.4",
      "cross-env": "^5.2.0",
      "parcel-bundler": "latest",
      "react": "^16.8.4",
      "react-dom": "^16.8.4"
    },
    "devDependencies": {
      "babel-core": "^6.26.3",
      "babel-plugin-import": "^1.11.0",
      "babel-preset-react-app": "^7.0.1"
    }
  }

This file contains information about your project and all outsiders packages, used in your application.

That’s all, our simple react application ready. Now lets run it. Open your command line and go to your project folder:

To compose your application write command:

yarn

Yarn will download all packages and compose your application:

To run your program just enter command:

yarn start

This command builds your react application and start local server http://localhost:1234

Enter on this address in your browser and you will see your application:

Now if you change any source code in your project, it will be automatic changed in browser:

That’s all, finally look in folder build. There You will find compiled JavaScript code with your application which you can use in production.

React it’s simple! Good luck 😉

Reinstall youtube-dl on Ubuntu 18.04

First remove old version of youtube-dl if installed:

sudo apt-get remove youtube-dl

Next install latest version of youtube-dl and install it:

sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

If you have an error such “/usr/bin/env ‘python’ no such file or directory youtube-dl” – thats meen than you does not have installed python, or you install python3. Install python by command:

sudo apt install python-minimal

Or you can start youtube-dl with python3:

python3 /usr/local/bin/youtube-dl

Or you can create symbolic link python3->python with following command:

sudo ln -s /usr/bin/python3 /usr/local/bin/python

Налаштування BDCOM P3310

bdcom p3310

Підключіть кабель в COM порт комп’ютера та Console порт на оптичному терміналі. Вікрийте програму Putty та підключіться до COM порта на швидкості 9600

Для входу в консоль введіть логін: admin, пароль: admin

Після підключення перейдемо в рожим налаштування, для йього введіть по черзі наступні команди:

enable
config

Щоб переглянути поточну збережену і активну конфігурацію введіть команди:

show configuration
show running-config

Приступаємо до налаштування!
1) Вилучимо стандартний vlan 1 і додамо vlan управління (у мене він 1000), vlan 1001 (клієнтський):

ІР адреса оптичного терміналу: 10.10.0.3
Шлюз по замовчуванню 10.10.0.1 (у вас ці настройки можуть бути іншими)

no interface vlan 1
vlan 1000,1001
exit
interface vlan 1000
description core
ip address 10.10.0.3 255.255.255.0
exit
ip default-gateway 10.10.0.1

П’ятий комбо порт я налаштував як вхідний (1000 – vlan управління, 1001 – клієнтський):

interface gigaEthernet 0/5
description UPLINK
no shutdown
switchport trunk vlan-allowed 1000
switchport trunk vlan-allowed add 1001
switchport trunk vlan-untagged none
switchport mode trunk
exit

Вибрав комбо порт щоб можна було включити вхідний лінк по міді або SFP.

3) Напишемо шаблон для онушок (надалі вони самі будуть реєструватися, потрібно буде тільки дописувати опис і зберігати конфиг):

epon onu-config-template user1
cmd-sequence 001 epon onu port 1 ctc vlan mode tag 1001
cmd-sequence 002 epon onu port 1 ctc loopback detect
cmd-sequence 003 epon onu port 2 ctc vlan mode tag 1001
cmd-sequence 004 epon onu port 2 ctc loopback detect
cmd-sequence 005 epon onu port 3 ctc vlan mode tag 1001
cmd-sequence 006 epon onu port 3 ctc loopback detect
cmd-sequence 007 epon onu port 4 ctc vlan mode tag 1001
cmd-sequence 008 epon onu port 4 ctc loopback detect
cmd-sequence 009 loopback-detection recovery-time 7200
exit

Налаштуємо EPON порти:

interface EPON0/1
no shutdown
description ixnfo
switchport trunk vlan-untagged none
switchport trunk vlan-allowed 1001
switchport mode trunk
epon pre-config-template user1 binded-onu-llid 1-64
filter dhcp
switchport protected 1
  
interface EPON0/2
no shutdown
description ixnfo
switchport trunk vlan-untagged none
switchport trunk vlan-allowed 1001
switchport mode trunk
epon pre-config-template user1 binded-onu-llid 1-64
filter dhcp
switchport protected 2
  
interface EPON0/3
no shutdown
description ixnfo
switchport trunk vlan-untagged none
switchport trunk vlan-allowed 1001
switchport mode trunk
epon pre-config-template user1 binded-onu-llid 1-64
filter dhcp
switchport protected 3
  
interface EPON0/4
no shutdown
description ixnfo
switchport trunk vlan-untagged none
switchport trunk vlan-allowed 1001
switchport mode trunk
epon pre-config-template user1 binded-onu-llid 1-64
filter dhcp
switchport protected 4

Добавимо адміністратора і пароль (замість слова TEXT введіть ваш пароль):

aaa authentication login default local
aaa authentication enable default none
aaa authorization exec default local
username admin password 0 TEXT
enable password 0 TEXT
service password-encryption

Вкажемо з яких адрес дозволено підключатися адміну:

ip access-list standard MANAGEMENT
permit 10.10.0.1 255.255.255.255
exit
ip telnet access-class MANAGEMENT

Вкажемо часовий пояс і NTP-сервер з яким синхронізувати час (на нових прошивках замість sntp потрібно писати ntp):

time-zone Kyiv +2
sntp server 10.10.0.1
sntp query-interval 3600

Налаштуємо SNMP для збору статистики:

snmp-server location test
snmp-server contact test
snmp-server community public ro MANAGEMENT

Налаштуємо ім’я пристрою (замість тексту olt_3 введіть назву вашого пристрою) і довжину консольного рядка:

hostname olt_3
terminal width 256
terminal length 256

Відключимо HTTP (за бажанням)

no ip http server

Або налаштуємо з доступом по IP з раніше створеного access-list

ip http server
ip http access-class MANAGEMENT

Вкажемо період в секундах через який повинен включаться порт після стану error-disable:

error-disable-recovery 10800

Зберігаємо налаштування:

write

На нових прошивках зберігаємо так:

write all

На цьому основна настройка завершена.

Додаткові налаштування

Виберемо потрібну ONU і додамо опис:

interface EPON0/1:1
description TEXT

За бажанням замість telnet можна використовувати SSH, який включається командою:

ip sshd enable

Якщо яка-небудь ONU флудить, наприклад EPON0/2:28, то можна відключити на ній ethernet порт (при петлі це не допоможе):

interface EPON0/2:28
epon onu port 1 ctc shutdown

При петлі можна додати ONU в чорний список і видалити з порта, після цього ONU не зможе автоматично зареєструватися, а в лог файлі будуть записи «reject»:

interface EPON0/2
epon onu-blacklist mac e067.b37d.d3d3
no epon bind-onu mac e067.b37d.d3d3

Дозволити на ONU тільки два MAC адреси можна так:

interface EPON0/2:2
switchport port-security dynamic maximum 2
switchport port-security mode dynamic

Перегляд версії прошивки, MTU, списку адміністраторів:

show version
show system mtu
show local-users

Скидання на заводські налаштування:

delete startup-config
reboot

How to reboot Mikrotik if ping failed

Let’s write script that reboot mikrotik device if no ping to gateway.

First of all lets go to menu System -> Script in Winbox and create new script with name PingCheck

Write this core in field Source:

:if ([/ping 10.21.2.1 count=10] = 0) do={
     /system reboot
}

Don’t forget to change IP 10.21.2.1 to yours gateway IP address.

Now lets create scheduler that will start this script every 10 minutes. Go to menu System -> Scheduler and create new task:

Write some name of new task, set start date Jan/01/1970, time 00:00:00 and run interval 00:10:00. Don’t forget to write script name PingCheck in field On Event.

That’s all.

How to Clone a Partition or Hard drive in Linux

First lets show all partitions in system:

fdisk -l

Now clone a partition /dev/sdb1/ to /dev/sdc1 using the following dd command.

dd if=/dev/sdb1  of=/dev/sdc1

The above command tells dd to use /dev/sdb1 as input file and write it to output file /dev/sdc1.

How to Clone Linux Hard Drive

Cloning a Linux hard drive is similar to cloning a partition. However, instead of specifying the partition, you just use the entire drive. Note that in this case it is recommended that the hard drive is same in size (or bigger) than the source drive.

dd if=/dev/sdb of=/dev/sdc

This should have copied the drive /dev/sdb with its partitions on the target hard drive /dev/sdc. You can verify the changes by listing both drives with fdisk command.

fdisk -l

Windows – як встановити Git

Щоб встановити Git на Windows 7 завантажте найновішу версію програми на офіційному сайті:

https://git-scm.com/download/win

Запустіть завантажений файл, та слідуйте інструкціям

Якщо ви використовуєте в роботі Visual Studio Code, виберіть його редактором по замовчуванню в списку:

Gitlab – add SSH key

Щоб кожен раз при завантаженні проектів на сервер gitlab не вводити пароль, потрібно добавити SSH ключ.

Для цього на вашому комп’ютері згенеруйте пару відкритого і закритого ключа командою:

ssh-keygen -t rsa -f ~/.ssh/gitlab

Вводити пароль на сертифікат чи ні, вирішуйте самі. Все залежить від ситуації і вашої параноїдальності. Якщо вкажете пароля, його потрібно буде вводити кожен раз, коли будете використовувати ключ для авторизації.

Якщо у вас це єдиний ключ в директорії .ssh, то більше нічого робити не треба. У разі, якщо у вас їх декілька, то треба створити конфігураційний файл і вказати, для якого ресурсу який ключ використовувати. Для цього створюємо файл ~ / .ssh / config приблизно такого змісту:

Host git.example.host
    IdentityFile /home/user/.ssh/gitlab
    port 22

Порт 22 вказувати не обов’язково. Я його вказав для прикладу, щоб в разі використання нестандартного порту, ви його там вказали.

Тепер копіюємо вміст файлу ~/.ssh/gitlab.pub і йдемо в web інтерфейс gitlab. Відкриваємо розділ Setting->SSH Keys і вставляємо в поле key наш ключ.

Щоб завантажити проект на сервер gitlab, відкрийте папку з проектом на вашому комп’ютері та виконайте команди:

git init
git add .
git commit -m "Initial commit"
git remote add project [email protected]:root/project.git
git push

Не забудьте поміняти [email protected] на адрес вашого сервера, розташування та назву проекта root/project.git, на вашому сервері.