Використовуйте powershell для запуску файлу конфігурації cygwin


0

Я використовую Windows Server 2012 R2. У мене є файл cygwin_config, який я запускаю всередині cygwin очікуйте конфігурацію cygwin команду. Файл налаштовує мої 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.

Я також створив файл, який має expect / 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 }
}

[EDIT] Потрапила помилка спливаючого вікна, змінивши дозволи на файл із властивостей (надав повні права адміністратору). Але вона все ще не працюватиме, оскільки програма не може працювати на моєму комп'ютері: "Ця програма не може працювати на вашому ПК" Так що рішення йде в кошик для сміття.

Відповіді:


1

Я не використовую Powershell, імовірно, подібна установка, описана тут, повинна працювати. Загалом, з перерахованим підходом можуть виникнути дві проблеми:

  1. Сценарій очікуваного сценарію, тому його слід запускати за допомогою C: Cygwin bin ex.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). Запустіть цей пакетний сценарій.


Дякую, мені вдалося трохи просунутися у своїх пошуках. Тепер, коли він намагається запустити його, він не буде успішним, оскільки ssh-host-config не існує відповідно до powerhell. C:\Cygwin\bin\expect.exe : couldn't execute "ssh-host-config": no such file or directory At C:\Users\Administrator\Desktop\cygwin.ps1:1 char:1 + C:\Cygwin\bin\expect.exe '/home/Administrator/cygwin_config'´
Mira

Mira, це не powerhell, що повідомляє, що ssh-host-config не існує, це повідомлення походить від очікуваної команди (і передається тільки через PowerShell). Ви можете створити скрипт оболонки в Cygwin, який встановлює необхідні змінні середовища (зокрема PATH) і викликає ssh-host-config з цього скрипту, і нарешті викликати цей скрипт оболонки з командою spawn з сценарію очікування.
Uwe Mayer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.