Ваш
Системный Администратор

Качественная IT инфраструктура - залог успеха компании.

[RUBY] Быстрое сканирование портов в сети

schedule folder_open Development, Monitoring, Security label_outline Ruby, Scanning

Пример скрипта для быстрого сканирования диапазона адресов на предмет открытого TCP порта.
Сканирование ведётся в асинхронном режиме.
Гемы: Сelluloid GEM для потоков, Net-Ping GEM что-бы не писать велосипед с сокетами

1
2
3
gem install celluloid net-ping
wget https://gist.githubusercontent.com/POStroi/181d2dd3291ce707c8cc/raw/19931c85c6fe7a088d289a73bbe1282f9b29fd78/scan.rb
ruby scan.rb 192.168.0.1-254 80

Github GIST

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/env ruby
# gem install celluloid net-ping
require 'celluloid/current'
require 'net/ping'
require 'ipaddr'

class ScanPort
  include Celluloid

  def scan host, port
    res = Net::Ping::TCP.new(host, port)
    if res.ping?
      type = detect(res.host)
      puts "[+] #{host} : #{type}\n"
    end
  end

  def detect(ip)
    begin
      data = Net::HTTP.get_response(ip, '/')
      if !data.body.empty?
        response = data.body
      else
        response = data.header['set-cookie']
      end

      case response
        when /LuCI/
          'OpenWRT LuCI'
        when /mikrotik/
          'MikroTik'
        when /AIROS_/
          'Ubiquiti'
        when /DVR Components/
          'eDVR'
        when /ITV/
          'ITV WebServer Client'
        when /It works!/
          'Blank NGINX'
        when /m.jsp/
          'Phantom DWDR'
        when /DVR IE Video/
          'DVR IE Video - model?'
        when />TL-(.*)</
          "TP-Link #{$1}"
        when /doc\/page\/login.asp/, /\/index.asp">location<\/a>./
          'HikVision DVR'
        when />WEB SERVICE</
          'Maybe - Dahua DVR'

        else
          'Not detect'
      end
    rescue
      'Response error'
    end
  end
end

def make_hosts_list(network)
  ip_range = IPAddr.new network
  (ip_range.to_range).map(&:to_s)
end

def main network, port
  hosts = make_hosts_list(network)
  hosts.each do |host|
    sc = ScanPort.new
    sc.async.scan host, port
  end
end

if ARGV.size < 2
  puts "USE: #{File.basename(__FILE__)} network port "
  puts "Sample: #{File.basename(__FILE__)} 192.168.0.1/24 80 "
  exit
end

main ARGV[0], ARGV[1].to_i

Ruby on Rails перевод на Русский имени модели

schedule folder_open Any, Development label_outline Hell, Ruby

Странный вопрос мне задали на Toster, спросили как в “рельсах” получить перевод на русский язык имя модели/класса.

Сам вопрос:

CapeRatel:
POS_troi: Ну да. Не подскажите как из обьекта @article вывести переведенное на русский язык имя класса в нижнем регистре. А то г..кодить не хочется.

Выданное решение:

config/locales/ru.yml

1
2
3
4
ru:
  class_name_translate:
    article: 'Статьи'
    tags: 'Тэги'

в контроллерах

1
2
3
4
5
6
7
8
9
10
11
def get_articles
  @article = Article.all
  @tag = Tag.all
  @article_ru = translate_model_name(@article).mb_chars.downcase
  @tag_ru = translate_model_name(@tag).mb_chars.downcase
end

#в application.rb
def translate_model_name(obj)
  I18n.t(obj.model_name.i18n_key, scope: :class_name_translate)
end

Есть у кого идеи предложения? Прошу под кат в комментарии, интересно мнение “рэльсистов” :)

Notebook Wi-Fi fix

schedule folder_open Hardware label_outline Wireless

Не редко у ноутбуков производства HP/Lenovo и других, встречается ситуация когда Wi-Fi напрочь отказвается работать. В диспетчера зедач отображается как нормально работающее устройство но отказывается включатся по кнопке, не помогает установка оффициальных драйверов и всяких “родных” утилиток.

Мне такие ноутбуки приходят как правило с “убитым” BIOS - люди до потери пульса прошивают в надежде на исправление ситуации (Иногда помогает).

Проблема частая на ноутбуках с новоиспечённой Windows 8х.

Предлагаю быстрое и надёжное решение этой проблемы - необходимо снять Wi-Fi карту и заклеить контакт соединяющийся с 20-м контактом mPCI-е слота.
Если Wi-Fi карта рабочая то всё будет работать, есдинственный минус это то что пропадёт возможность отключить Wi-Fi штатными средствами.
Вид сзади, второй контакт справа от выреза.

Указанный “пин” зарезервирован под функцию управления питанием модулей/энергосбережения. При низком уровне на нём, модуль переходит в режим “энергосбережения” что равносильно отключению.

Отключение Bluetooth в CentOS и аплета в панели

schedule folder_open Any, Unix label_outline Bluetooth, CentOS

Кто вообще нынче изпользует Bluetooth?
Не нашел в настройках “Гнома” большой, зелёной, кнопки “Выключить это неподобство” и при этом почему-то в CentOS 7 его включают по умолчанию. Мне не жалко памяти и батареи но жутко раздражает :)

Отключаем сам сервис:

1
sudo systemctl disable bluetooth.service

но для того чтобы убрать аплет с верхней панели (рядом с часами), необходимо подправить файл /usr/share/gnome-shell/js/misc/config.js:

1
const HAVE_BLUETOOTH = 1;

необходимо сбросить в 0

1
const HAVE_BLUETOOTH = 0;

Перезаходим и радуемся :)

А вы разве так не делаете?

schedule folder_open Any, Hardware label_outline Hell

Принесли люди на ремонт ноутбук, после обследования пациента, людям сказали что куллер не крутится, он перегревается и в результате выключается, видиокарта подлежит замене ибо немножко померла.

Далее последовал примерно такой монолог:

“Он уже не раз так выключался, мы делали так - включали, заворачивали его плотно в ткань и клали под подушку. Через время доставали и он продолжал нормально включаться. А вы разве так не ремонтируете?”.

Теперь вот сидим и думаем, где мы в этой жизни что-то пропустили. :)

Сказ о том как у мужика колёса воровали

schedule folder_open Any, Security label_outline Hell, Wireless

На первый взгляд, заголовок этого поста не имеет никакого отношения к IT и к безопасности, но могу вас заверить - всё совсем на оборот.

Сегодня упал на хвост к товарищу, он ехал в соседний город, а мне так-же не мешало бы заехать к клиенту и в результате мы оказались у одного клиента с не работающим видео наблюдением. (Товарищ по профилю занимается видео наблюдением)

FL.RU сливает а мы парсим

schedule folder_open Any, Security label_outline Hell


Сегодня на Хабре появился пост о том что в индексе Yandex имеется большое количество файлов и как оказывается не какие нибудь публичные файлы из профилей и т.д. а что нинаесть самые приватные - из приватных переписок заказчика и исполнителя.

Собственно эта тема получила большой резонанс на Хабре но как-то вообще не особо осветилась в более глобальных маштабах (вообще рекомендую к прочтению комментариев к посту на Хабре).

Разработчики (Админы?) среагировали доволи быстро на проблему, но как-то не понятно они на неё среагировали - в комментариях предположили что срочным образом, в конфиг Nginx был прописан такой строчко location ~ *.(doc|docx|xls|xlsx|ppt|pptx|rar|zip|pdf|txt)$ { return 403; }.
Я даже по началу растроился но после быстрых тестов, оказалось что 403 ошибку дают только перешедим без рефера с https://st.fl.ru, у меня немного отлягло, не зря пока скрипт писал (правда потом контору спалил ValdikSS но на момент написания поста, ситуация не поменялась).

Мне от нечего делать стало интересно слить часть файлов засветившихся в индексе, чем и занялся (пишу пост а оно всё качается ;))

Gett SSD params

schedule folder_open Any, Hardware, Unix label_outline SSD

Пользователям Windows намного больше повезло в плане различных утилит для получения различной информации о “железе”, в Linux хоть и не всё так красиво выглядит но утилиток тоже хватает, правда в большенстве случаев консольных :)

Захотелось посмотреть чем живёт мой SSD диск KINGSTON SVP200S37A120G под CentOS7, включен ли TRIM и другие плюшки.

Установка GIT 2.3.1 в CentOS 7 x64

schedule folder_open Unix label_outline Git

Захотелось мне поиграться новым GIT-ом 2.3.1 версии.

В стандартных репозиториях не нашел, в подключенных у меня сторонних то-же не было.

В результате нашел у Fedora-вцев репозиторий с пакетами GIT 2.3.1 для CentOS 7, быстро подключил и обновился :)

Установка

1
2
3
cd /etc/yum.repos.d/
sudo wget https://gist.githubusercontent.com/POStroi/5433fe41ab24dc973372/raw/c2ad68645119be518269e2cab1a86967aea450e8/git.repo
sudo yum update

Проверяем версию

1
2
$>git --version
git version 2.3.1

SSH Key авторизация на удалённом хосте

schedule folder_open Security, Unix label_outline SSH

Под Windows всё ясно - установил PuTTY и дело с концом, а вот с Linux почему-то у людей возникают трудности - у новичков, иногда и не очень новичков.

Для подключения к SSH серверу с использованием приватного ключа, используется параметр “-i”

1
ssh -i /patch_to_private_key/key user@host

Конечно неудобно постоянно прописывать путь к файлу сертификата и хочется немного автоматизировать процесс. Для этого необходимо создать файл настроек вашего SSH клиента и прописать хосты и используемые для них ключи