Então eu estava fazendo um arquivo em lote. Ao usá-lo, abro um programa em linha de comando (WSL, para ser específico). O programa recebe alguma entrada. Para um exemplo específico, estou criando um arquivo em lote que é executado wsl --distribution kali-linux
e executado automaticamente sudo service xrdp start
nessa máquina virtual para que eu possa me conectar à área de trabalho. mas quando o arquivo de lote executa o kali-linux, o cmd faz:
┌──(user㉿DESKTOP-6SNGSF1)-[/mnt/c/Users/Saaransh Garg]
└─$
Eu quero saber como posso dar o sudo service xrdp start
comando para a VM? Eu acho que isso seria semelhante a dar entrada a um programa.
Além disso, tentei fazer como: wsl -- sudo service xrdp start
mas, quando tento me conectar à VM, ele mostra "ocorreu um erro interno". Estou considerando, como o WSL ainda está em desenvolvimento, que isso é apenas um bug. Então eu não tenho outra opção a não ser dar entrada para o arquivo WSL através do .bat
Quanto à configuração, configurei o Kali à maneira do NetworkChuck , seguindo este vídeo do David Bombal para mudar a porta para 3390. Resumindo o que fiz foi isso-
- Instale o kali da microsoft store, atualize e atualize o kali, instale o xfce e o XRDP
- Seguindo David Bombal no vídeo mencionado a partir das 8:50 e usando os comandos mencionados aqui para mudar a porta para 3390
O que eu queria de tudo isso era fazer um arquivo em lotes de modo que sempre que eu executasse isso, o Kali linux se conectasse ao RD. Minha tentativa:-
wsl --user root --distribution kali-linux --exec sh -c "service xrdp start"
mstsc /v:localhost:3390 /g:RDP
Observação:
- Estou usando WSL v2
Nota: Isso responde à pergunta originalmente feita -- Como passar entrada para o comando WSL. No entanto, a pergunta foi posteriormente editada para adicionar essa resposta à pergunta e levantar uma nova questão. Deixando aqui para fins históricos.
Tente algo ao longo das linhas de:
Isso deve funcionar. Ele executa a distribuição como root (para evitar o uso de uma senha no
sudo
) e executa osh
(para um tempo de execução mais rápido e evitar qualquer um dos scripts de inicialização do shell normal) com uma linha de comando deservice xrdp start
.Você também pode considerar:
Que primeiro verificará se está em execução antes de iniciá-lo.
Invocação alternativa do CMD:
Mas as regras de citação começam a ficar muito mais complicadas, IMHO.
Para
xrdp
especificamente, tente:Embora a
wsl -u root -e sh -c "command"
funcione para a maioria dos comandos (e até mesmo para a maioria dos serviços), oinit.d
script paraxrdp
parece ter um problema com isso. Acredito que isso se deva a um problema de tempo, em que o shell (o processo proprietário) termina antesxrdp
de ter a chance de bifurcar.nohup
apenas garante que oxrdp
script de inicialização completo tenha a chance de ser executado antes que isso aconteça.Isso realmente não é um problema da WSL - A mesma coisa pode ser vista se você fizer algo semelhante com o
exec sh -c "sudo service xrdp start"
.