system('wsl sudo ...') does not work

Hi, i'm trying to write a script that executes a few command through wsl on Windows (basically to automatic install libraries from apt and a c++ routine with ./configure and make).
When I use command such as
system('wsl ./configure')
it goes well, but when I use some like
system('wsl sudo apt-get install')
the script runs but never ends (I see always the "pause" button).
Any suggestions on how to fix this? Thanks

4 commentaires

Rik
Rik le 15 Juin 2022
You should make sure your system calls avoid interacting with the user. You should also treat each call to system as a different shell (so don't use cd in one and assume that folder in a second call).
I suspect the first one is biting you here.
Francesco Bellelli
Francesco Bellelli le 15 Juin 2022
This only occur when I use wsl. In fact, when I run the same script in unix systems it allows me to insert the root password.
So how can I use “sudo” commands in wsl/how can I allow the user to insert the password and then pass to the system command directly it?
Rik
Rik le 16 Juin 2022
The double layer is apparently a problem. Could there be a way to pipe the password in somehow? That would require you to store the password in a Matlab variable, but I don't really see a way around that myself. (you can use the input function if you don't want to store the password in plain text in your m file)

Connectez-vous pour commenter.

Réponses (1)

Francesco Bellelli
Francesco Bellelli le 16 Juin 2022

0 votes

It seems to work now by taking as input from the user his password and then using
system(wsl echo <password> | wsl sudo -S <command>)

Catégories

En savoir plus sur Startup and Shutdown dans Centre d'aide et File Exchange

Produits

Version

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by