Показаны сообщения с ярлыком сделай сам. Показать все сообщения
Показаны сообщения с ярлыком сделай сам. Показать все сообщения

среда, 18 июля 2018 г.

понизити (downgrade) kubernetes 1.11.1 назад до 1.11.0 з ceph

1. повертаємо debian пакети

apt-get install kubeadm=1.11.0-00 kubectl=1.11.0-00 kubelet=1.11.0-00
в мене змінений файл в systemd
10-kubeadm.conf\
тому погоджуємося на заміну
там відрізняється формат

2. kubeadm config images pull --kubernetes-version=v1.11.0


3. Робимо файл, пусть буде config.yaml
    apiVersion: kubeadm.k8s.io/v1alpha1
    kind: MasterConfiguration
    api:
      advertiseAddress: 10.1.0.151
    networking:
      podSubnet: 10.244.0.0/16
    kubernetesVersion: 1.11.0
 
4. kubeadm init --config=config.yaml --ignore-preflight-errors=all
5. додаємо в /etc/default/kubelet
KUBELET_EXTRA_ARGS=--max-pods=240
6. Для перестраховки systemctl daemon-reload 
7. service kubelet restart
8. Перевіряємо kubectl get nodes -o json | jq '.items[] | {name: .metadata.name, cap: .status.capacity}' 

пятница, 27 октября 2017 г.

Удаленное восстановление пользовательской машины Ubuntu

Получил удаленную незагружающуюся машину под Ubuntu, удалось найти обычную установочную (инсталяционную) usb flash.
Загрузились в режиме пробовать ubuntu
По viber передавал команды
apt install openssh-server

sudo bash

passwd ubuntu


Когда зашел удаленно
сделал
for i in /sys /proc /run /dev /dev/pts; \
do sudo mount --bind "$i" "/mnt$i"; done

sudo chroot /mnt

 Так как в графическом режиме локальный диск смонтирован, то вместо /mnt правильная папка обычно где нить в /media/имя пользователя/какие то цифры, и так зашел, то скорее всего /etc/resolv.conf копировать не нужно.

Ну а дальше, от исходной проблемы зависит ...

суббота, 21 октября 2017 г.

Planmeca Romexis Viewer ubuntu

Получил снимки сделанные в лаборатории.
На диске записан viewer для macos и windows.
Просмотрщики под android показывали только одну ось, а мне нужен был сагитальный срез.
скопировал java viewer на винт и убрал из скрипта запуска параметры для macos
-Xdock:name='Planmeca Romexis Viewer' -Xdock:icon=../Xtras/Romexis.icns
и память прописал явно
вместо -Xmx$1m  -Xmx2048m

Итого скрипт выглядит так
# scriptPath="${0%/*}"
# export PATH=$PATH:${scriptPath}
# export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:${scriptPath}/dylib
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:./dylib

java -Xmx2048m -Dj3d.rend=ogl -classpath '*' romexis_client_viewer.ui.RxViewer  -new3d $2 $3 &

Для удобства проставил права chmod +x start.sh

четверг, 7 сентября 2017 г.

Mysql анализ производительности на работающем сайте

Скачиваем percona tool
 wget https://www.percona.com/downloads/percona-toolkit/3.0.4/binary/debian/xenial/x86_64/percona-toolkit_3.0.4-1.xenial_amd64.deb
 
Ставим percona tool
sudo dpkg -i  percona-toolkit_3.0.4-1.xenial_amd64.deb
 
в консоли
 cd /var/log/mysql

вытираем предыдущий файл лога (копируем "ничего" в файл)
> mysql.log

в консоли mysql
 SET GLOBAL general_log = 'ON';
открываем страницу (выполняем нужные действия)

выключаем лог
SET GLOBAL general_log = 'OFF';

 pt-query-digest --type genlog mysql.log  > report

-----------------------------------------------

Проверяем что работает без индексов
set global log_queries_not_using_indexes='on';
делаем что нужно
set global log_queries_not_using_indexes='off';
Отрезаем все выше необходимого времени
sed  '/Time: 2017-09-05/,$!d' mysql-slow.log
>
report_index.log
Запускает анализ
 pt-query-digest report_index.log > report_without_index

вторник, 16 мая 2017 г.

редиректы nginx много SSL бесплатных сертификатов


Сделать отчет по redirect откуда и куда
#!/usr/bin/python
file = open("redirects","r")
pairs={}
for row in file:
    if 'server_name' in row:
        name=row.strip().split(" ")
    if 'return' in row:
        redir = row.strip().split(" ")
        pairs[name[1]]=redir[3]
file2 = open("report","w")
for key, value in pairs.items():
    file2.write( key+" => "+value+"\n")
file2.close




Генерация конфига nginx  для бесплатных SSL сертификатов let's encrypt для большого количества редиректов

#!/usr/bin/python
file = open("source","r")
pairs={}
for row in file:
    if 'server_name' in row:
        name=row.strip().split(" ")
    if 'return' in row:
        redir = row.strip().split(" ")
        pairs[name[1]]=redir[2]

for pair in pairs.keys():
#    print "certbot certonly -d "+pair+" -d "+pair[4:] (раскоментируем если нужно сгенерировать для бота)
# второй вариант вывода, если файл не нужен
    print "server {"
    print "    listen <Реальный IP>:80;"
    print "    listen <Реальный IP>:443 ssl;"
    print "    server_name",pair, pair[4:]+";"
    print "    location /.well-known {"
    print "        root /var/www/html;"
    print "    }"
    print "    location / {"
    print "    return 301 ",pairs[pair]
    print "    }"
    print "    ssl_certificate /etc/letsencrypt/live/"+pair+"/fullchain.pem;"
    print "    ssl_certificate_key /etc/letsencrypt/live/"+pair+"/privkey.pem;"
    print "    ssl_trusted_certificate /etc/letsencrypt/live/"+pair+"/chain.pem;"
    print "}"



понедельник, 23 января 2017 г.

Ansible собрать активные default gateway на unix системах

Иногда по историческим причинам на сервере может быть настроено несколько default gateway, но реально работает,  конечно, один.

Ansible определяет интерфейс по умолчанию с помощью команды
ip -4 route get 8.8.8.8


Если нужно проверить (провести аудит) настроек шлюзов то можно использовать такой коротенький yml

---
- hosts: all
  become: yes
  tasks:
    - local_action: file path=report state=touch
    - local_action: lineinfile line="System {{ inventory_hostname }} \ 
has gateway {{ ansible_default_ipv4.gateway }}" dest=report
 
Можно вставить проверку и выводить нужные условия
---
- hosts: all
  become: yes
  tasks:
    - local_action: file path=report state=touch
    - local_action: lineinfile line="System {{ inventory_hostname }} has {{ansible_hostname}} \
gateway {{ ansible_default_ipv4.gateway }}" dest=report
      when: inventory_hostname !=ansible_hostname
 

пятница, 28 октября 2016 г.

Аудит логинов на unix системах

Очень быстрое решение как собрать все учетные записи с unix серверов для аудита
1. Вспомнили, где стоит ansible
2. Навели порядок в файле /etc/ansible/hosts на контрольной (управляющей) машине. Если не все красиво с точки зрения dns, то пользуйтесь ansible_ssh_host, если нестандартные порты - ansible_ssh_port для тех узлов, где без них не получается
3. ansible all -a "cat /etc/passwd" > в файл.
4. Берем cat файл | egrep -v "nologin|false|еще чтонибудь" и удивляемся, а эти учетки почему не удалены :)

воскресенье, 14 августа 2016 г.

куда же ходит сервер собрать IP Linux tcpdump

Часто команда, которая поддерживает програмное обеспечение на серверах "не до конца уверена" куда же ходит сервер ( к каким другим серверам).

Варианты поиска ответов, которые я нашел:


  1. Netflow и коллектор. В качесте netflow источника может быть как сетевое оборудование, так и модуль ядра.
  2. Tcpdump конечно(если сервер не очень, очень нагружен). В крайнем случае может быть конечно зеркалирование порта на сетевом оборудовании (span, rspan, espan в Cisco, port-mirroring в Juniper)
  3. Iptables с включенным логированием (очень желательно в отдельный файл)


В данном случае мне подходил tcpdump прямо на сервере

Процесс сбора:


  1.  Уменьшаем объем захвата на известные адреса (либо запустив сбор на 5 минут, либо опросить команду поддержки приложения)
  2.  Записали tcpdump с ключиками
    •  -w имя файла
    •  -i имя интерфейса 
    •  -С 1000 (размер файла не более 1000 млн байта - чуть меньше 1 Гб). В этом случае при достижении того самого 1000 млн будет начинать создаваться новый файл. Хорошо создавать на отдельный раздел с ощутимым свободным местом, и если на нем закончится место, то чтобы это не вызвало остановки сервисов.
  3. Так как готового способа, который меня устраивал я не нашел, я скопировал к себе все файлы с размером каждого почти 1 Гб  на ПК, меньше шансов было повлиять на активный сервис.

Обработка:

Приемлемых результатов достиг разделив обработку tcp и udp отдельно.
 Для TCP можно выделить соединения (tcp flow), чтобы не бороться с фильтрацией динамических портов, и отфильтровать сканы несуществующих портов

Обработка TCP

1) Для выделения потоков воспользовался утилитой tcpick (ставится на ubuntu
apt-get install tcpick
).


2) Отобрал только established. Быстро просмотрел результат с помощью вывода в more.
3) Дальше немного почистил с помощью egrep -v 'известное1| известное 2' (кому-то больше нравится писать grep -vE  )
Команда выглядела так

tcpick -a -r 123.pcap | grep 'ESTABLISHED' | egrep -v 'известное1|известное2' > temp


2) склеиваем вывод файла в один файл
temp &gt;&gt; temp_result_tcp
, потом
temp2 >> temp_result_tcp 
и так далее

3) Отбираем только destination. Смотрим файл, например less имя файла

В полученном промежуточном сводный файле:
  • выбираем 5 столбец (destination)
  • сортируем, 
  • считаем дубли - ключ c в uniq
  • оставляем uniq только имеющиеся дубли (за счет ключа -d) не нужны мне случайные соединения за неделю (в моем случае так надо, в вашем может быть иначе) 
  • результат сортируем по числам за счет ключа n
  • Самых активных выводим первыми за счет ключа r в программе sort

awk '{print $5}' |  sort | uniq -cd | sort -nr 

Просматриваем глазами результат ( в моем случае были настойчивые сканеры), убираем явных сканеров.
Кстати, смотреть tcpick с ключом - С (цвет) pcap, созданный  тем же tcpdump, мне понравилось.


Обработка UDP



1) Читаем еще раз исходный файл pcap, но уже читаем только udp
tcpdump udp -r имя файла дампа | more . Бегло просматриваем что можно выбросить сразу
2)   чистим tcpdump udp -r 123.cap| egrep -v '.domain|ntp|sip|mdns|dhcpv6|netbios| и прочее'
в моем случае это был multicast и почему-то порт 53413 (оказалась популярная цель для сканеров)
3) Оставил и source и destination и значок направления. Обьем в моем случае очевидно меньше. Команда awk '{print $3,$4,$5} > в файл.
4)  Склеиваем аналогично результат всех в один файл, проходим
awk '{print $3,$4, $5}' |  sort | uniq -cd | sort -nr 
 
5) Просматриваем глазами, убираем явных сканеров и оставшийся мусор

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

пятница, 15 января 2016 г.

сбор информации с маршрутизаторов cisco python paramiko

На основе предыдущего скрипта сделал сбор информации и подсчет подходящих под условие
отличие здесь довольно простое
из функции есть возрат значения, а уже значение (по сути ответ устройства) анализируется на наличие строк.
поиск строки сделан очень просто просто проверяется строка целиком с помощью in.

#!/usr/bin/python
#for work with SSH we need paramiko pip install paramiko
import paramiko
#hide password input 
import getpass
#build in library socket for with exception
import socket
list_bad_ip=[]
receive_buffer=""
client = paramiko.SSHClient()
#for connection via ssh you need to accept SSH keys
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#create function for send command and check answer
def send_string_and_wait_for_string(command, wait_string):
#send command
    shell.send(command)
#clear buffer
    receive_buffer = ""
#until receive WAIT_STRING - remote device ready
    while not wait_string in receive_buffer:
        receive_buffer += shell.recv(1024)
#return buffer with output of command 
 return receive_buffer
#read list of IPs from text file one by line
ips = [i.strip() for i in open("./1")]
username1 = raw_input("enter login :")
#hide password input 
password1 = getpass.getpass("enter password :")
#create loop for each IPs
for ip in ips:
#if we use try easy to work with expection
    try:
#connect to device
        client.connect(ip,port=22,username=username1,password=password1)
#check state
#        print "connect to ",ip
        shell = client.invoke_shell()
#wait for enable
        send_string_and_wait_for_string("", "#")
#enter command and wait for return to #
        receive_buffer = send_string_and_wait_for_string("sh int Vlan12 | i line protocol\n","#")
#first option not interesting 
        if "line protocol is up" in receive_buffer:
            print ip+" protocol is up"
#second possible answer interesting save in separate list 
        else:
            print ip+" line protocol is down"
            list_bad_ip.append(ip)
#close with this device
        shell.close()
        client.close()
#work with timeout error
    except socket.error:
        print ip + '=== Device unreachable'
#add ip with errors to list
        list_bad_ip.append(ip)
#save this list to file
with open('bad_ip', 'w') as f:
    for s in list_bad_ip:
        f.write(s + '\n')
#show list at the screen for lazy admin
print list_bad_ip
(END)

четверг, 22 октября 2015 г.

Скрипт в помощь поиска неуправляемых коммутаторов/hub на Python (seach unmanaged switch/hub connected to Cisco with python script)


#!/usr/bin/python
# version 0.1 Created Yevgenii Merezhko
# My assumptions:
# There are switches with many vlans. I select only "users switches"
# There are Cisco ip phones in voice vlan.
# Usually Po1 is uplink
# PC connected via IP Phones and somecase we have some hub/unmanaged switches after Cisco IP Phones
# Ip Phones have two mac address (one in voice vlan and second in data vlan)
#just for entering VoiceVlan number
VoiceVlan = str(input("Enter Voice Vlan number: "))
#put file in folder in put name of file
#may be better to work with all files in folder TBD
with open("/home/yevgenii/Downloads/test/test2/192.168.73.252.1.1") as textFile:
    lines = [line.split() for line in textFile]
# I expect some thing like 
# 73    0004.23e7.d793    DYNAMIC     Fa0/22
# 73    0005.1e35.de56    DYNAMIC     Fa0/15
# 
# for example  it could be extracted from "sh mac add" 
# My colleague collect it for me with bash+clogin (module from Rancid)
# and separate file with like this bash script
# #!/bin/sh
# for i in $(ls 1*);
# do 
# cat $i| grep "^\ "| grep -v "Po1" > $i.1
# done
row = 0
MacAddressPhones = []
ListWithoutPhones = []
macaddress = 0
macaddress1 = 0
macaddress2 = 0
mac1phones = 0
mac2phonesswitch = 0
Vlan = 0
x = 0
y = 0
B = 0
port = []
PortNumber = 0
result = {}
#create list with mac in voice vlan
while row < len(lines):
    Vlan = lines[row][0]
    macaddress = lines[row][1]
    if Vlan == VoiceVlan:
        MacAddressPhones.append(macaddress)
        del lines[row][:]
    row += 1
#for easy loop filtering 
ListWithoutPhones = lines
#remove empty from list
lines = filter(None, lines)
#compare Mac in voice vlan with mac in data vlan)
for mac1phones in range(len(MacAddressPhones)):
    macaddress1 = MacAddressPhones[mac1phones]
    mac2phonesswitch = 0
    while mac2phonesswitch < len(lines):
        macaddress2 = lines[mac2phonesswitch][1]
        if macaddress1 == macaddress2:
            del ListWithoutPhones[mac2phonesswitch][:]
        lines = filter(None, lines)
        ListWithoutPhones = filter(None,ListWithoutPhones)
        mac2phonesswitch += 1
    mac1phones += 1
#create only list of port
while x < len(ListWithoutPhones):
    port.append(ListWithoutPhones[x][3])
    x += 1
print("port",port)
#calucate how many times port in list if more then 1, put in interesting list
while y     PortNumber = port[y]
    print("PortNumber",PortNumber)
    B = port.count(PortNumber)
    print("B",B)
    if B >1:
        result[PortNumber]=B
        print("result len:",len(result))
    y += 1
print ("List of Ports: ",result)
# after this it need to be filter uplink port in most case it will be easy

среда, 14 октября 2015 г.

Идея для очистки Cisco ACL IOS на маршрутизаторах

Условия:
  • Есть большое количество маршрутизаторов
  • ACL большого размера
  • ACL более менее похожи
  • ACL используют локальные адреса в качесте source
Идея:
Удалить неиспользуемые правила хотя бы более менее массово, чтобы сделать acl читаемыми человеком

Вариант решения:

  • Зайти на маршрутизатор, выбрать из ACL одного типа все destination у которых счетчики равны 0. 
  • Зайти на следующий маршрутизатор выбрать  destination у которых счетчики равны 0, сравнить с предыдущим, оставить только одинаковые
  • Зайти на следующий маршрутизатор.
В моем случае процент кандидатов на удаление очень приличный



четверг, 16 июля 2015 г.

Cisco NX OS кое что полезное

На устройстве nx/os можно хранить версии конфигов чуть удобнее чем раньше
http://www.cisco.com/c/en/us/td/docs/switches/datacenter/sw/5_x/nx-os/system_management/configuration/guide/sm_nx_os_cg/sm_7rollback.html

Раньше для этого применяли просто копирование
 copy run file (были особенности на разных устройствах, но можно было иметь под рукой конфиг

Разницу между сохраненным конфигом (checkpoint) и например текущим конфигом можно посмотреть так
http://www.cisco.com/web/techdoc/dc/reference/cli/nxos/commands/sec/show_diff_rollback-patch_running-config.html

Разницу в состоянии интерфейсов например так

show interface port-channel 10 | diff

только ввести команду надо пару раз
во втором увидим разницу

список всех комманд вводимых на устройстве с NX OS за последнее время

show accounting log | i нужные слова для поиска

быстрый обзор трафика на всех интерфейсах при выводе
show interfac | egrep eth|rate  (обращаю внимание на "или"= |)

очень полезная команда, чтобы найти нужный nexus (нужное шасси) включив индикацию на модуле

locator-led дальше по ?




среда, 18 марта 2015 г.

CDR Cisco Callmanager (CUCM) в легкочитаемый человеком вид

Для анализа CDR от Cisco CallManager нашел три более-менее удобных способа
Для любого из них нужно сначала
1) Залогиниться в CUCM CAR
2) выгрузить в csv CDR (при выгрузке отключите CMR будет немного меньше избыточных для простых задач данных)

Обработка
1)  открыть в excel и убрать вручную избыточные столбцы, привести формат даты и времени из unix формата timestamp в человекочитаемый формат, например с помощью двух формул. То есть добавил два столбца, вставил формулу и протянул мышкой вниз.

=(((C1/60)/60)/24)+ДАТА(1970; 1; 1) - дата
=(((C1/60)/60)/24)                                     - время

2) просмотреть с помощью небольшой утилиты с форума supportforum.cisco.com 
cisco 
https://learningnetwork.cisco.com/thread/50029?start=15&tstart=0
 прямая ссылка на всякий случай
https://dl.dropboxusercontent.com/u/53426117/PermLinks/UCMcdr.exe

3) красивый способ 

Взято здесь http://yurisk.info/2014/05/12/cisco-cucm-cdr-report-call-duration-and-called-numbers-extraction-script/

 awk -F,'BEGIN {OFS=","} {print strftime("%c",$5),$9,$31,$56}'report_cdr
Вместо report_cdr использовать ваше имя файла с отчетами
Такую строку удобно использовать в других, более сложных скриптах
Если просто обработать, то не забываем в конце добавить например
awk-F, 'BEGIN {OFS=","} {print strftime("%c",$5),$9,$31,$56}' report_cdr  перенаправляем в report.csv

среда, 20 августа 2014 г.

Маленькие замечания по ремонту

Не являюсь специалистом по ремонту, просто замечания.
При креплении гипсокартона к каркасу из 0.55 мм мне было удобно одной дрелью засверливать 2 мм сверлом, а шуруповертом закручивать.
Но больше 3-4 отверстий сразу не засверливать, иначе (если лист держится руками) есть вероятность ухода листа, и придётся закручивать шурупы с усилием.
Лучше иметь запас 2-3 сверла, при накоплении усталости их легко сломать.
Для облегчения работы атланта (тот который держит лист) нужно:
Стоять поперёк козлов
Скрутить из обрезков профиля Т-образную швабру. Длина на 2-3 см длиннее расстояния от козлов до потолка. В следующей комнате  может потребуется переставить шурупы для регулировки длины в данном помещении ( у меня потолок в коридоре ниже для размещения светильников, а в комнатах нет). В моём случае хватило жесткости профиля даже с частичным перехлестом обрезков.
При сборке каркаса для закручивания блошек удобно использовать магнитный держатель биты.
Для закручивания шурупов в гипсокартон удобно использовать биту с ограничителем ( чтобы шурупы не уходил глубже чем надо).

Доводка пола после самовыравнивающей смеси.
После заливки пола стяжкой у меня остались наплывы (да мне потом сказали, что надо было пройтись поролоновой затиркой с ручкой, но это было потом) и небольшие точечные бугорки.
Часть этих бугорков убирается стамеской.
Но плоскость снимать очень уж долго.
У меня болгарка маленькая (11000 оборотов, 900 ватт).
Купил фрезу на 125 мм, пришлось снять защиту ( фреза должна касаться пола плоскостью).
Проверил, что на фрезе написано 12500 оборотов.
Есть два вида рабочей поверхности фрез (отличаются по площади контакта - секторы круга и полоса по кругу сантиметра 2 с дугообразными желобками. Выбрал с меньшей плоскостью, так как болгарка маленькой мощности.
Одел туфли несмотря на жару и плотные перчатки ( мелочь летит, лупит по рукам).
Очень слабыми усилиями ( не придавливая), плавно водя по плоскости ( не забудьте вставить ручку, чтобы было удобно) срезал неровности.
Работал с частыми перерывами, чтобы не перегреть болгарку и сквозняку хоть немного вынести пыль.

воскресенье, 24 февраля 2013 г.

Seagate FAT+ ex.ua fs.ua

  1. Виды прошивок
  2. На плейере seagate fat+ есть две группы прошивок: до 1.55 и после.
    До 1.55 есть определенное количество прошивок написанных любителями-владельцами.
    Например, в них есть более крупный шрифт и дополнительные сервисы.
    Но однажды обновив устройство до 1.55 все эти сервисы становятся недоступны.
    Но раз назад дороги нет, остается вперед.
  3. Правильная прошивка

  4. Тогда нужно обновится до версии 2.20 EMEA (так называемый холодный метод файл на флешке и зажатый на 10 секунд reset  при включении.
    После этого нужно обновится до 2.23, но не с сайта seagate, а с разблокированным telnet и самое важное автозапуском. Процесс обновления с версии 2.20 на версию 2.23 - одна команда. 
Но подготовка:
- У меня получилось перепрошиться только если я подключал seagate fat+ кабелем Ethernet. Со вставленным wifi адаптером не получалось.
- Заходим telnet на плейер. Логин root без пароля.
- Вставляем флешку в формате fat32 желательно небольшого размера с файлом install.img. У меня нашлась 256 Мб со светодиодами (удобно видеть есть ли прогресс, а не просто ждать).
- Вводим команду kill -6 1. Ждем.



  • 3. Установка mos3service
  • Заходим с помощью telnet. Переходим во временную папку
    cd /tmp
    Скачиваем скрипт установки
     wget http://www.moservices.org/mos3/install 
    Говорим операционной системе плейера, что файл install это программа
    chmod +x install
    запускаем программу install из текущего каталога ./install.
    В моем случае возникли проблемы при старте web сервера.
    /usr/local/etc/mos/bin/php: can't resolve symbol '__isnan'
    /usr/local/etc/mos/bin/php: can't resolve symbol '__isnan'

    Помогло три вещи
    1. cd /tmp

      wget http://www.moservices.org/patches/lib.tar.bz2
      tar xjf lib.tar.bz2 -C /usr/local/etc/mos/lib/
    2. Пока возился переставил libiconv
    3. Прочитал скрипт установки (выполнил еще раз последнюю часть там где переменные окружения. Зашел на ip адрес/index.php  

    вторник, 25 декабря 2012 г.

    Сетевые диаграмы без Visio

    Потребовалось мне нарисовать сетевые диаграммы без Visio.
    И так что бы не очень страшненькие.

    Выручил Dia. Но в чистом виде он несколько ... аскетичен.
    Нужно еще раз зайти на сайт и скачать скачивальщик shape.
     и уже нет страшно лучше чем ничего.

    P.S. Пользователей Netformx designer прошу не хихикать.

    воскресенье, 28 октября 2012 г.

    имитация пульта Воля кабель Homecasr eM2150CO

    Пользуюсь приемником Воли кабель Homecast eM2150 CO больше как часами. Уже несколько лет не отключаюсь по просьбе хозяев квартиры. Но часы надо переводить на летнее-зимнее время. Пульт самого приемника уже работает частично давно. Не работает кнопка "ок".  Выручает Irremote на далеко не новой Nokia e50 с ИК портом.

    четверг, 18 октября 2012 г.

    IPhone 5 nanosim из microsim

    Принесли iphone 5 и обычную microsim, а надо nanosim.
    Оказалось что для того, чтобы сделать nanosim достаточно ножниц. Только хорошо бы проверить, что ножницы "не гуляют", а режут ровно.
    Вынимаем держатель nanosim из iphone 5 и используем его как шаблон.
    Не забываем уголок.
    По длинным сторонам обрезаем впритык.
    По коротким чуть (примерно миллиметр) обрезаем с каждой стороны.
    Толщину в моем случае спиливать не пришлось.
    У знакомых пришлось с помощью шкурки со стороны картинки сошлифовать до необходимой толщины.


    среда, 10 октября 2012 г.

    windows 7 prof из русского в английский

    Принесли ноутбук sony с купленной русской win7 prof. Нужен не русский язык, а английский. Скачиваем диск с language pack. Внимание там 3,5 Гб. Распаковываем iso, например, с помощью 7zip. Нам нужен в папке en-US файл lp.cab. Дальше четко по инструкции по установке русского языка (ну естественно заменяя ru ru на en US в нужных местах). Инструкция по установке русского есть, например, на ru-board.
    Не испытывая сомнений ставим через f8 и первый пункт.

    вторник, 21 августа 2012 г.

    Загрузочный диск bootable Cisco callmanager cucm 9.0

    1. Скачиваем утилиты cdrtools - http://smithii.com/files/cdrtools-latest.zip

    2. Распаковываем в папку. Например, в  D:\mkiso\

    3. Берем скачанный UCSInstall_UCOS_8.6.x-xxxxx-x.sgn.iso  или UCSInstall_UCOS_9.0.1.10000-31.sgn.iso

    4. Распаковываем содержимое  UCSInstall_UCOS_9.0.1.10000-31.sgn.iso в папку, например, в D:\UCSInstall_UCOS_9.0.1.10000-31.sgn

    5. В командной строке переходим в UCSInstall_UCOS_9.0.1.10000-31.sgn

    6. Затем там же в командной строке выполняем команду: D:\mkiso\mkisofs.exe -A "CDROM" -V "CDROM" -p "Cisco" -J -R -r -v -T -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o D:/Bootable_UCSInstall_UCOS_9.0.1.10000-31.sgn.iso .
    Точка в конце нужна