Read several variables from command output via SSH


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Read several variables from command output via SSH
# 8  
Old 10-18-2019
Quote:
Originally Posted by RudiC
Does lshwres interact directly with the terminal? Are there any options to disable this? I could sort of replicate the situation with stty:
Code:
ssh -n -t user@remotehost "hostname; stty"
Pseudo-terminal will not be allocated because stdin is not a terminal.
remotehostname
echo $?
0

No error!
Well, yes.
Code:
stty: standard input: Inappropriate ioctl for device
Pseudo-terminal will not be allocated because stdin is not a terminal.

Both outputs, aren't exactly errors, why the ssh command comes back with exit code 0.
I want to understand why this message comes and how I'm able to avoid it.

Like I said: The code is working perfectly, as it is supposed to be, I just receive this message and I try to build the script to avoid it properly and not just suppress it.

Quote:
Originally Posted by RudiC
Looks like -n and -t are mutually exclusive (which seems logical if reading the man page). Try dropping the -n:
Code:
ssh -t user@remotehost  "hostname; stty"
remotehostname
speed 38400 baud;
.
.
.
echo $?
0

When I drop the -n parameter, the while loop will break, which is just how it is supposed to work.
The stty: standard input: Inappropriate ioctl for device message comes, regardless of which command I execute on the remote host, even a date, or test causes it, which is why I think that the ssh is responsible for it.
Code:
# ./script.sh
.
.
.
++ for HMC in '${strHMCLIST}'
++ strNILIST=
++ ssh -t hscroot@X.X.X.X 'lssyscfg -r sys -F '\''name type_model serial_num lpar_proc_compat_modes'\'''
++ read N T S P
Connection to X.X.X.X closed.
++ strNAME=XXX
++ strIDENT='XXX*XXX'
++ strNILIST='XXX XXX*XXX\n'
++ strCPUARCH=XXX
++ read strDATE
+++ ssh -t hscroot@X.X.X.X date
stty: standard input: Inappropriate ioctl for device
Pseudo-terminal will not be allocated because stdin is not a terminal.
++ read N T S P
++ echo


Last edited by NKaede; 10-18-2019 at 06:39 AM..
# 9  
Old 10-18-2019
you said you're under Cygwin's bash.
Looks like Cygwin (at least mine) is using Windows' native ssh client:
Code:
 $ which ssh
/cygdrive/c/WINDOWS/System32/OpenSSH/ssh

Is that the case with you as well?
Any chance you can try the same script/steps on the native UNIX (not Cygwin on MS)?
# 10  
Old 10-18-2019
Quote:
Originally Posted by NKaede
.
.
.
When I drop the -n parameter, the while loop will break, which is just how it is supposed to work.
.
.
.

Now, it doesn't break, that is. The ssh just eats up all stdin which is redirected from .outlist.tmp, and the while read cleanly finishes on end-of-file. Did you consider using another file descriptor for redirecting its input?

Last edited by RudiC; 10-18-2019 at 05:26 PM..
This User Gave Thanks to RudiC For This Post:
# 11  
Old 10-19-2019
You can connect the remote stdin to the local stdin if you use another descriptor for reading the file.
Code:
29   while read N T S P <&3
30   do
31     strNAME=$N
32     strIDENT=$T'*'$S
33     strNILIST=$strNILIST$strNAME" "$strIDENT"\n"
34     strCPUARCH=${P##*,}
35
36     ssh -t hscroot@$HMC "lshwres -r proc -m $strIDENT --level sys -F 'configurable_sys_proc_units installed_sys_proc_units curr_avail_sys_proc_units'" > .outhw.tmp
37     read strCPROC strIPROC strAPROC < .outhw.tmp
38
39     ssh -t hscroot@$HMC "lshwres -r mem -m $strIDENT --level sys -F 'configurable_sys_mem installed_sys_mem pend_avail_sys_mem'" > .outhw.tmp
40     read strCRAM strIRAM strARAM < .outhw.tmp
41
42     echo -e "$strNAME,$T,$S,$strCPUARCH,$strIPROC,$strCPROC,$strAPROC,$strIRAM,$strCRAM,$strARAM" >> $strOUTPUTFILEHW
43   done 3< .outlist.tmp

This User Gave Thanks to MadeInGermany For This Post:
# 12  
Old 10-24-2019
Quote:
Originally Posted by vgersh99
you said you're under Cygwin's bash.
Looks like Cygwin (at least mine) is using Windows' native ssh client:
...
Is that the case with you as well?
Any chance you can try the same script/steps on the native UNIX (not Cygwin on MS)?
I use MobaXterm, which brings its own SSH client.
Unfortunately, for "security reasons" this Windows Terminalserver is the only connection I have to my UNIX machines.

Quote:
Originally Posted by RudiC
Now, it doesn't break, that is. The ssh just eats up all stdin which is redirected from .outlist.tmp, and the while read cleanly finishes on end-of-file. Did you consider using another file descriptor for redirecting its input?
Quote:
Originally Posted by MadeInGermany
You can connect the remote stdin to the local stdin if you use another descriptor for reading the file.
Well, yes, this works and is an idea I didn't get behind earlier.
Thank you very much!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Read in Multiple log files and output selected variables and values to cvs file

I have several problems with my problems: I hope you can help me. 1) the If else statement I am getting an error message. My syntax must be incorrect because the entire statement is throwing an error. For example in filew.log if these items don't exist Memsize, SASFoundation and also if... (0 Replies)
Discussion started by: dellanicholson
0 Replies

2. Shell Programming and Scripting

Psql output into array and read 2 fields into different variables

Hello Just edited the entry to make it easier to understand what i want How can i achieve this: GOAL: read 2 field from a table with PSQL result of this PSQL command is this INSTALLEDLANG=$(su - postgres -c "psql -A -t -q -c -d ${DBNAME} -t -c 'SELECT code, iso_code from res_lang'") ... (0 Replies)
Discussion started by: winston6071
0 Replies

3. Shell Programming and Scripting

Using a find command in ssh but using local variables?

I have a script like this (Yes, I know the DAY6 number isn't right - I'm just testing at this point): DAY0=`date -I` DAY1=`date -I -d "1 day ago"` DAY6=`date -I -d "2 days ago"` if then ssh root@synology1 nohup rm -rf "/volume1/Fileserver/$DAY6" fi I've tested the line to remove the... (5 Replies)
Discussion started by: Orionizer
5 Replies

4. Shell Programming and Scripting

Format output from command from variables

Hi , I have below command to that outputs from variables.. command: echo $INSTANCE $DATAB $status $TSLastBackup| awk '{printf("%-8s %-8s \t \n",$1,$2,$3,$4)}' | tee $LOGF the ouput is now: INSTANCE DATABSE BACKUP_STATUS BACKUPTIMESTAMP ------- -------- -------- ... (1 Reply)
Discussion started by: db2_usd
1 Replies

5. Shell Programming and Scripting

Environment Variables in text file and read command

I cannot get the following substitution ($ORACLE_SID) to work: The variable ORACLE_SID is set to wardin my environment. It has been exported. I have a text file called test.dat: /u07/oradata/${ORACLE_SID}/extab/finmart/summit/ps_voucher_line_crnt_ex.dbf... (2 Replies)
Discussion started by: bradyd
2 Replies

6. Shell Programming and Scripting

how to write 2 variables while using read command

Hello All i have input files contains 2 values as following 20-Oct-09 Z59408009 20-Oct-09 Z59423060 and i am using the following script cat /home/or/input.txt | awk '{print $2}' >log count=0 while read line; do count=$(( count + 1 )) echo "UPDATE SAT_JRLTRT SET AVT='X' WHERE... (6 Replies)
Discussion started by: mogabr
6 Replies

7. Fedora

ssh command to read server resources

what is the ssh command to read my server resources, like system operator, Ram installed, CPU etc....? (12 Replies)
Discussion started by: dan8354544
12 Replies

8. Shell Programming and Scripting

Interpreting Logicals/Environment Variables using the read command

Hi All I have something that from the outset seems really trivial but in practice is not quite working. I have the following code sample in my shell script which illustrates the problem echo "enter home directory" read home mkdir $home/newdir The user then enters a logical $HOME... (3 Replies)
Discussion started by: kingpin2502
3 Replies

9. UNIX for Dummies Questions & Answers

trouble using read to store values in variables from command output

I know there are caveats about using read in pipelines because read is treated by a subshell. I know this but I can't think of any way to accomplish this regardless, I'm still a rookie. I hope somebody will be able to interpret what it is that I'm trying to accomplish and correct me. ... (2 Replies)
Discussion started by: ProGrammar
2 Replies

10. Shell Programming and Scripting

Cannot read variables after ssh with rc file (KSH)

Greetings all, I'm currently making use of the $HOME/.ssh/rc file to launch an automated shell script immediately after the user has been verified through ssh. The current problem that I'm facing now is that I am unable to use the "read" command anymore... seems like the "read" statements are... (0 Replies)
Discussion started by: rockysfr
0 Replies
Login or Register to Ask a Question