вторник, 24 октября 2017 г.

Windows Vagrant Hyper-V

Установил Vagrant на Win10 в папку D:\Vagrant. Далее пользовался подсказками отсюда.

В Hyper-V у меня уже виртуалка была, и виртуальный коммутатор на внешнюю сеть уже был настроен. Далее зашел в powershell от админа и создал подкаталог D:\Vagrant\work, перешел туда. Посмотрел на сайте по фильтру provider = hyperv бокс с Centos 7 и установил:

PS D:\Vagrant\work> vagrant box add centos/7 --provider hyperv
==> box: Loading metadata for box 'centos/7'
    box: URL: https://vagrantcloud.com/centos/7
==> box: Adding box 'centos/7' (v1708.01) for provider: hyperv
    box: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/1708.01/providers/hyperv.box
    box: Progress: 100% (Rate: 932k/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'centos/7' (v1708.01) for 'hyperv'!

Можно посмотреть результат:

PS D:\Vagrant\work> vagrant box list
centos/7 (hyperv, 1708.01)

Теперь нужно создать файл с окружением Vagrantfile в рабочем каталоге:

PS D:\Vagrant\work> vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Этот файл я переименовал в Vagrantfile_orig, и создал новый Vagrantfile с такими же правами, как оригинальный,  и таким содержимым:
# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|  
  config.vm.box = "centos/7"
  config.vm.provider "hyperv"
  config.vm.network "public_network"
end

У меня только один хард на машине, поэтому рекомендации из советов по ссылке вначале статьи я не делал (там где differencing_disk = true). Теперь можно запускать машину:

PS D:\Vagrant\work> vagrant up
Bringing machine 'default' up with 'hyperv' provider...
==> default: Verifying Hyper-V is enabled...
==> default: Importing a Hyper-V instance
    default: Cloning virtual hard drive...
    default: Creating and registering the VM...
    default: Setting VM Integration Services
    default: Successfully imported a VM with name: centos-7-1-1.x86_64
==> default: Starting the machine...
==> default: Waiting for the machine to report its IP address...
    default: Timeout: 120 seconds
    default: IP: fe80::215:5aff:fe09:9c08
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 192.168.0.172:22
    default: SSH username: vagrant
    default: SSH auth method: private key
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!

Теперь можно войти по SSH на нашу машину например с помощью PuTTY. Но по логу выше видно, что метод авторизации  - private key. Поэтому нужно подложить ключик в PuTTY. 

Для этого запускаем PuTTYgen, загружаем ключик private_key из каталога d:\Vagrant\work\.vagrant\machines\default\hyperv\
и сохраняем в формате для PuTTY *.ppk и потом сохраняем для своей сессии.

Все, теперь можно работать.

понедельник, 21 августа 2017 г.

Windows XP Bluetooth установка

Если система не находит устройство (неопознанное).
Ищем его vendor id и product id. В системном каталоге в папке inf файл bth.inf
там добавляем по аналогии с другими устройствами.

среда, 16 августа 2017 г.

Windows Скрипт добавления в рабочую группу новых пользователей

Что будем делать:

в Powershell из csv файла с такой структурой Name,Password,Dolzhnost,Department
будем параметрами передавать содержимое, чтобы циклом вызывать cmd-файл с указанными выше аргументами. Все лежит в одном каталоге.


LIST-USERS.TXT
Name,Password,Dolzhnost,Department
ivanov,Pa$$w0rd,dir,Filial
kruglov,Pa$$w0rd,it,Filial

ADD.CMD
//здесь устанавливаем запретить смену пароля пользователем, срок действия пароля 
//неограничен, добавляем в группу удаленного рабочего стола
// файл создаем в кодировке 866, иначе не читает русскую кодировку

net user %1 %2 /add /fullname:%3 /comment:%4 /passwordchg:no 
wmic UserAccount where name="%1" set passwordexpires=false
net localgroup "Пользователи удаленного рабочего стола" %1 /add

ADDUSERS.PS1
Import-Csv c:\bin\list-users.txt|ForEach-Object -process {
& '.\add.cmd' $_.Name $_.Password $_.Dolzhnost $_.NB
}


пятница, 4 августа 2017 г.

Копирование с помощью PuTTy Windows <-> Linux

pscp source destination

Для windows->linux путь в windows берем в двойные кавычки.

Если порт отличается от стандартного, то

pscp -P 12121 "c:\123.txt" user@1.2.3.4:/home/user

понедельник, 20 марта 2017 г.

Windows настройка сетевого моста в Windows 7

Есть два компьютера под Windows 7 с именами SERVER и USER. На SERVER две сетевые карты INET и LAN, к INET подключен ADSL-модем (192.168.1.1), к LAN подключен USER через кросс-кабель.

Нужно: раздать интернет на второй компьютер.

Для этого используем "Сетевой мост"

Настройки на SERVER:

INET:
192.168.1.2
255.255.255.0
192.168.1.1
DNS: google

LAN:
DHCP (выдает APIPA) - настройка адреса не играет роли, нужен только физический интерфейс для объединения в мост

Объединяем в сетевой мост два этих интерфейса и настраиваем на нем адрес:
192.168.1.3
255.255.255.0
192.168.1.1
DNS: google


Настройки на USER:

192.168.1.4
255.255.255.0
192.168.1.1
DNS: google

Примечание:
Во всех настройках убирал ip6 (нужно было для ПО на SERVER).
Также включал маршрутизацию ipenablerouter=1 (предварительные неудачные попытки настройки маршрутизации)

вторник, 14 февраля 2017 г.

Java beginner error: non-static method ... cannot be referenced from a static context

Есть класс, в нем главный метод и второй, который вызывается с параметрами в главном.
class A {
 public static void main(String args[]) {
  m2(a)
 }
 public int m2(boolean b) {
  ...
 }
}
Ошибка возникла при непонимании отсутствии в описании второго метода ключевого слова static (т.е. нужно было public static int m2(boolean b) ).
Static означает, что метод принадлежит классу, а не объекту классу, и вызвать его можно тогда напрямую m2(a). При отсутствии static, нужно было бы создать объект класса и вызывать от него, что-то вроде:
A obj = new A();
obj.m2(a);

пятница, 10 февраля 2017 г.

Windows mklink

mklink
Создает символьную ссылку.

MKLINK [[/D] | [/H] | [/J]] Ссылка Назначение

        /D          Создает символьную ссылку на каталог.
                    По умолчанию создается символьная ссылка на файл.
        /H          Создает жесткую связь вместо символьной ссылки.
        /J          Создает соединение для каталога.
        Ссылка      Указывает имя новой символьной ссылки.
        Назначение  Указывает путь (относительный или абсолютный), на который ссылается
                    новая ссылка.

Работает от администратора.

Как использовать.
Есть интернет клиент-банк, который нельзя по их требованиям запускать на терминальном сервере, но нам надо. Этот клиент-банк при инсталляции пишет в реестр пути размещения в HKLM и в окружение PATH путь к хранению сертификатов. Проблема в том, что при каждом входе информация из каталога хранения сертификатов программой удаляется, и, на основании токена, скачивается с сервера клиент-банка. Т.е. одновременная работа бухгалтеров невозможна.

Что нам нужно для решения этой проблемы.
Нужно, чтобы для клиент-банка место установки было неизменным, а для каждого пользователя был свой каталог, для хранения информации.
Для этого с помощью mklink под администратором создаем символьную ссылку на каталог установки, при этом сам каталог перед этим переименуем или удалим.

mklink /D c:\IKB K:

где K: это будет сетевой диск (на данный момент не созданный). Т.е. после запуска команды ссылка создастся, но по ней перейти никуда нельзя.

Теперь под каждым пользователем нужно подключать свою сетевую папку, как диск K:

net use K: \\net\path\to\IKB /PERSISTENT:YES

Теперь все работает как нужно