Я использую Windows Server 2012 R2. У меня есть файл cygwin_config, который я запускаю внутри cygwin с помощью команды excpect cygwin_config . Файл настраивает мои ssh_config и sshd_config. Есть ли способ запустить этот скрипт из моего PowerShell, чтобы мне не нужно было заходить в Cygwin для его запуска? Я пробовал несколько вещей, но безуспешно, таких как:

$file= Get-ChildItem  C:\Cygwin\home\Administrator\cygwin_config | Select-Object 
$cmd=Start-Process C:\Cygwin\bin\mintty.exe $file

Он попытался открыть mintty.exe, но он немедленно закрыл mintty.exe. Если больше ничего не помогает, я думаю, мне нужно будет создать пользователей, которые нужны ssh-host-config, с помощью powershell.

Я также создал файл с ожидаемым /path /to /cygwin_config и сохранил его как файл .exe. После двойного щелчка по нему появляется всплывающее сообщение об ошибке: «Windows не может получить доступ к указанному устройству, пути или файлу.Возможно, у вас нет соответствующих разрешений для доступа к ним. " Я пытался запускать приложения с правами администратора и изменил разрешения в каталоге, но для этого ничего не работает.

Мой cygwin_config:

#!/bin/expect -f

spawn ssh-host-config

set timeout 20

expect {
     "Should StrictModes be used? (yes/no)" { send "no\r" }
}

set timeout 5

expect {
     "new local account 'sshd'? (yes/no)" { send "yes\r" }
}

expect {
     "Do you want to install sshd as a service?"  {send 
     "yes\r";exp_continue }
     "Enter the value of CYGWIN for the daemon:" { send " \r"; }
}

set timeout 5

expect {
     "Do you want to use a different name? (yes/no)" { send "no\r";
      exp_continue }
     "Create new privileged user account" { send "yes\r";
      exp_continue }
     "Please enter the password" { send "pwd\r";
      exp_continue }
     "Reenter:" {send "pwd\r";
      exp_continue }
}

[РЕДАКТИРОВАТЬ] Получил из-за ошибки всплывающих окон, изменив права доступа к файлу из свойств (дал полные права администратору). Но это все равно не будет работать, потому что приложение не может работать на моем компьютере: «Это приложение не может работать на вашем компьютере», поэтому это решение отправляется в корзину.

1 ответ1

1

Я не использую Powershell, вероятно, должна работать установка, аналогичная описанной здесь. В целом, может быть две проблемы с перечисленным выше подходом:

  1. Этот сценарий является ожидаемым, поэтому его следует запускать через C:\Cygwin\bin\ hope.exe, а не C:\Cygwin\bin\ mintty.exe
  2. Расположение скрипта интерпретируется как аргумент команды Cygwin, поэтому путь должен использовать нотацию, которую понимает Cygwin (которая отличается от нотации Windows, если она не заключена в кавычки).

Вы можете попробовать:

C:\Cygwin\bin\expect.exe 'C:\Cygwin\home\Administrator\cygwin_config'

Эти одинарные кавычки важны, поэтому Cygwin распознает путь в стиле Windows. Или вы можете попробовать использовать нотацию Cygwin в первую очередь:

C:\Cygwin\bin\expect.exe /home/Administrator/cygwin_config'

Вот другой пример для игры. Создайте файл с именем run_myscript.bat с содержимым:

C:\Cygwin\bin\sh 'C:\Cygwin\home\Administrator\myscript.sh'

Создайте скрипт myscript.sh в указанном месте с содержимым:

date
sleep 10

Убедитесь, что ваш пакетный скрипт исполняемый (chmod 775 run_myscript.bat). Запустите этот пакетный скрипт.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .