11-06-2025 03:47 AM
I need to remotely connect to a Linux machine using SSH
IP: 192.168.5.xx,
Port: 22
User: *****
Password: *****
Then then I want to send some commands "lsusb[...]" and "sudo lspci[...]", and read back the responses.
Are there any prewritten vi's for this, or can anyone share what they have done to overcome this?
11-06-2025 08:13 AM
There are a couple of SSH packages in VIPM. I haven't tried them myself though.
11-06-2025 08:19 AM - edited 11-06-2025 08:20 AM
I've used the Putty command-line tools for this in the past.
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
The device we were talking to needed some RSA keys for security, and the customer was able to provide .ppk files designed for Putty.
The command line for SSH w/ security keys was (example):
@echo OFF
echo n | "C:\Program Files\PuTTy\plink.exe" -i "C:\SSH\keys.ppk" root@192.168.1.2 echo "Hello World!"
Or without all the security key stuff:
@echo OFF
"C:\Program Files\PuTTy\plink.exe" root@192.168.1.2 echo "Hello World!"
There's also a command line tool for SCP file transfer, example:
@echo OFF
echo n | "C:\Program Files\PuTTy\pscp.exe" -scp -i "C:\SSH\keys.ppk" "C:\SSH\filetocopy.txt" root@192.168.1.2:/root/scripts/filetocopy.txt
It looks like they added native SSH into LabVIEW in version 2021. I've never played with it -- we are still on 2019 and I believe Putty was NI's recommended method back then.
11-06-2025 10:34 AM
LabVIEW 2021 includes support for SFTP and SSH. You can find the palettes under Data Communication >> Protocols.
12-04-2025 09:55 AM
There is only SFTP palette no SSH, but I am able to use this to connect. There is nothing in the palette for send receive so I can issue commands and read the response. In serial this is read write.
12-04-2025 10:40 AM
LabVIEW opens and closes the connection for each command, you would have to dig in deeper or use a different API if you want to reuse a connection.
The VIs are here: <labview>\vi.lib\net\SSH\NI_SSH.lvlib
LabVIEW SSH
Works for me on 64 bit LabVIEW.
Tim Cannon uses LabSSH2 for his RT SSH API commands, might be worth a look for you: https://gitlab.com/cannontim/rt-ssh-api
12-08-2025 09:04 AM
Right, so I am using LIBSSH2 for LabVIEW Toolkit, and can successfully login, send commands and read the response. Where I am stuck now is using "sudo", as it will expect the password again, not sure how I do this. I am using a string array into a loop to send commands, but don't know how to get the password in and read the required respons.
12-10-2025 10:18 PM
When using the SSH.NET library, I used the technique in this stackoverflow post:
https://stackoverflow.com/questions/40918265/how-to-su-with-ssh-net
Specifically, you echo the password and then pipe that to the sudo command with a -S argument and then the command to execute.
If you log your session, the password will be included in clear text. Not generally a good idea.
Alternately, if you have multiple commands to run and evaluate as super user, you can use interactive mode with sudo -i
You will need to perform a read after writing the command and look for a message requesting the password (I used regex with this pattern \[sudo\] password for (\w+)\: ).
If found, you send the password with a new line appended. If you have previously elevated the session to super user, you will not get a prompt for the password (regex will return nothing)
Once you are done, you can send a ^D or a logout command to revert back the the standard user shell with standard permissions.