Use o powershell para executar o arquivo de configuração do cygwin

0

Estou executando o Windows Server 2012 R2. Eu tenho um arquivo cygwin_config que eu corro dentro do cygwin com o comando excpect cygwin_config . O arquivo configura meu ssh_config e sshd_config. Existe alguma maneira de executar este script do meu powershell, então eu não precisaria entrar no cygwin para executá-lo? Eu tentei algumas coisas, mas sem sucesso, como:

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

Ele tentou abrir o mintty.exe, mas fechou o mintty.exe imidamente. Se nada mais ajudar, acho que precisarei criar os usuários que o ssh-host-config precisa por meio do powershell.

Eu também criei um arquivo que tem expect / path / to / cygwin_config e o salvei como um arquivo .exe. Depois de clicar duas vezes nele, recebo um pop-up de erro: "O Windows não pode acessar o dispositivo, o caminho ou o arquivo especificado. Você pode não ter as permissões apropriadas para acessá-los. Eu tentei executar as coisas admin e alterou as permissões no diretório, mas nada funciona para isso.

Meu 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] Acabou o erro de janelas pop-up, alterando as permissões para o arquivo das propriedades (deu direitos totais ao administrador). Mas ainda não funciona porque o aplicativo não pode ser executado no meu pc: "Este aplicativo não pode ser executado em seu PC" Então essa solução vai para a lixeira.

    
por Mira 08.02.2018 / 14:06

1 resposta

1

Eu não uso o Powershell, presumivelmente uma configuração semelhante à descrita aqui deve funcionar. No geral, pode haver dois problemas com a abordagem listada acima:

  1. O script é um script esperado, portanto, ele deve ser executado via C: \ Cygwin \ bin \ expect.exe, não C: \ Cygwin \ bin \ mintty.exe
  2. O local do script é interpretado como um argumento para um comando do Cygwin, portanto, o caminho deve usar uma notação que o Cygwin entenda (que difere da notação do Windows, a menos que seja citada).

Você pode querer tentar:

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

Essas aspas simples são importantes para que o Cygwin reconheça um caminho no estilo do Windows. Ou você pode tentar usar a notação de caminho do Cygwin em primeiro lugar:

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

Aqui está um exemplo diferente para brincar. Crie um arquivo chamado run_myscript.bat com o conteúdo:

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

Crie o script myscript.sh no local especificado com o conteúdo:

date
sleep 10

Certifique-se de que seu script em lote seja executável (chmod 775 run_myscript.bat). Execute esse script em lote.

    
por 03.05.2018 / 17:47