Mailing List Archive

SSH commands to ONTAP 9.11.1P11 failing from within script
Folks something tells me this is going to be a "D'Oh!" moment, but I'm baffled.

I had a simple requirement to support an ongoing project that requires the creation of a snapshot, and a CIFS share referencing that snapshot, over a series of days. Snapshot and share name naming convention is a simple <YYYYmmdd-<string> and <YYYYmmdd-<string>$> respectively.
The intention is to create both snapshot/share a little after midnight each day until the project ends and they are no longer needed. Simple enough, right?
Well, when I run these commands via SSH from a prompt on a Linux box, everything works just fine:
[root@foo01 ~]# /bin/ssh admin@foo'snapshot create -vserver foo3 -volume Foo04 -snapshot 20231003-foo -expiry-time 11/02/2023 00:00:00'

Last login time: 10/2/2023 12:26:31

[root@foo01 ~]# /bin/ssh admin@foo 'snapshot show -vserver foo3 -volume Foo04 -snapshot 20231003-foo '

Last login time: 10/2/2023 12:46:12

Vserver: foo3
Volume: Foo04
Snapshot: 20231003-foo
Creation Time: Mon Oct 02 12:46:13 2023
Snapshot Busy: false
List of Owners: -
Snapshot Size: 14.76MB
Percentage of Total Blocks: 0%
Percentage of Used Blocks: 0%
Comment: -
7-Mode Snapshot: false
Label for SnapMirror Operations: -
Snapshot State: -
Constituent Snapshot: false
Expiry Time: 11/2/2023 00:00:00
SnapLock Expiry Time: -

However, running a script (sh or bash, makes no difference in this case), I get this when it runs. It actually doesn't matter what ONTAP command I send, they all give the same "Vserver name: Invalid." error (the /bin/ssh? lines are just echo statements in the script so I can see that it's building and sending the right command line):

/bin/ssh admin@foo 'snapshot create -vserver foo3 -volume Foo04 -snapshot 20231003-foo -expiry-time 11/02/2023 00:00:00'

Last login time: 10/2/2023 12:46:39

Error: Vserver name: Invalid. The Vserver name must begin with a letter or an
underscore. Maximum supported length: 41 if Vserver is type
"sync-source", 47 otherwise.

/bin/ssh admin@foo 'cifs share create -vserver foo3 -path /Foo04/.snapshot/20231003-foo -share-name 20231003-foo$ -share-properties oplocks,browsable,changenotify,show-previous-versions -symlink-properties symlinks -offline-files manual -vscan-fileop-profile standard -max-connections-per-share 4294967295 -comment pst migrations ok to delete after 11/02/2023 00:00:00'

Last login time: 10/2/2023 12:51:11

Error: Vserver name: Invalid. The Vserver name must begin with a letter or an
underscore. Maximum supported length: 41 if Vserver is type
"sync-source", 47 otherwise.

The script is so simple it's embarrassing. Define a few variables and optargs, build 3 simple SSH commands to send to the toaster, and run them. Everything up until these commands reach the toaster is working as expected. It just breaks when it gets there.





--

Kevin Davis

Systems Administration | Sr. Storage Engineer | Information Services

UMass Memorial Health | 100 Front St. Fl 1, Worcester, MA 01608 | mailto:kevin.davis@umassmemorial.org


The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, transmission, re-transmission, dissemination or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.
Re: SSH commands to ONTAP 9.11.1P11 failing from within script [ In reply to ]
The backticks are being interpreted by the local shell as as a command and
the input between the ticks is being sent as the output of that command.
Which is unknown command.

On Mon, Oct 2, 2023, 1:05 PM Davis, Kevin <Kevin.Davis@umassmemorial.org>
wrote:

> Folks something tells me this is going to be a "D'Oh!" moment, but I'm
> baffled.
>
> I had a simple requirement to support an ongoing project that requires the
> creation of a snapshot, and a CIFS share referencing that snapshot, over a
> series of days. Snapshot and share name naming convention is a simple
> <YYYYmmdd-<string> and <YYYYmmdd-<string>$> respectively.
> The intention is to create both snapshot/share a little after midnight
> each day until the project ends and they are no longer needed. Simple
> enough, right?
> Well, when I run these commands via SSH from a prompt on a Linux box,
> everything works just fine:
> [root@foo01 ~]# /bin/ssh admin@foo'snapshot create -vserver foo3 -volume
> Foo04 -snapshot 20231003-foo -expiry-time 11/02/2023 00:00:00'
>
> Last login time: 10/2/2023 12:26:31
>
> [root@foo01 ~]# /bin/ssh admin@foo 'snapshot show -vserver foo3 -volume
> Foo04 -snapshot 20231003-foo '
>
> Last login time: 10/2/2023 12:46:12
>
> Vserver: foo3
> Volume: Foo04
> Snapshot: 20231003-foo
> Creation Time: Mon Oct 02 12:46:13 2023
> Snapshot Busy: false
> List of Owners: -
> Snapshot Size: 14.76MB
> Percentage of Total Blocks: 0%
> Percentage of Used Blocks: 0%
> Comment: -
> 7-Mode Snapshot: false
> Label for SnapMirror Operations: -
> Snapshot State: -
> Constituent Snapshot: false
> Expiry Time: 11/2/2023 00:00:00
> SnapLock Expiry Time: -
>
> However, running a script (sh or bash, makes no difference in this case),
> I get this when it runs. It actually doesn't matter what ONTAP command I
> send, they all give the same "Vserver name: Invalid." error (the /bin/ssh?
> lines are just echo statements in the script so I can see that it's
> building and sending the right command line):
>
> /bin/ssh admin@foo 'snapshot create -vserver foo3 -volume Foo04 -snapshot
> 20231003-foo -expiry-time 11/02/2023 00:00:00'
>
> Last login time: 10/2/2023 12:46:39
>
> Error: Vserver name: Invalid. The Vserver name must begin with a letter or
> an
> underscore. Maximum supported length: 41 if Vserver is type
> "sync-source", 47 otherwise.
>
> /bin/ssh admin@foo 'cifs share create -vserver foo3 -path
> /Foo04/.snapshot/20231003-foo -share-name 20231003-foo$ -share-properties
> oplocks,browsable,changenotify,show-previous-versions -symlink-properties
> symlinks -offline-files manual -vscan-fileop-profile standard
> -max-connections-per-share 4294967295 -comment pst migrations ok to delete
> after 11/02/2023 00:00:00'
>
> Last login time: 10/2/2023 12:51:11
>
> Error: Vserver name: Invalid. The Vserver name must begin with a letter or
> an
> underscore. Maximum supported length: 41 if Vserver is type
> "sync-source", 47 otherwise.
>
> The script is so simple it's embarrassing. Define a few variables and
> optargs, build 3 simple SSH commands to send to the toaster, and run them.
> Everything up until these commands reach the toaster is working as
> expected. It just breaks when it gets there.
>
>
>
>
> --
>
> Kevin Davis
>
> Systems Administration | Sr. Storage Engineer | Information Services
>
> UMass Memorial Health | 100 Front St. Fl 1, Worcester, MA 01608 | mailto:
> kevin.davis@umassmemorial.org
>
>
> The information transmitted is intended only for the person or entity to
> which it is addressed and may contain confidential and/or privileged
> material. Any review, transmission, re-transmission, dissemination or other
> use of, or taking of any action in reliance upon this information by
> persons or entities other than the intended recipient is prohibited. If you
> received this in error, please contact the sender and delete the material
> from any computer.
> _______________________________________________
> Toasters mailing list
> Toasters@teaparty.net
> https://www.teaparty.net/mailman/listinfo/toasters
Re: SSH commands to ONTAP 9.11.1P11 failing from within script [ In reply to ]
On 02.10, Davis, Kevin wrote:
> ...
> However, running a script (sh or bash, makes no difference in this case),
> I get this when it runs. It actually doesn't matter what ONTAP command I
> send, they all give the same "Vserver name: Invalid." error (the
> /bin/ssh? lines are just echo statements in the script so I can see
> that it's building and sending the right command line):
If you want to see what command is actually being sent, use ssh with "-v".
E.g. it will then log something like "debug1: Sending command: ..."

> /bin/ssh admin@foo 'snapshot create -vserver foo3 -volume Foo04 -snapshot 20231003-foo -expiry-time 11/02/2023 00:00:00'
> Last login time: 10/2/2023 12:46:39
>
> Error: Vserver name: Invalid. The Vserver name must begin with a letter or an
> underscore. Maximum supported length: 41 if Vserver is type
> "sync-source", 47 otherwise.
Be careful with those single quotes in a script, nothing within those will
be substituted e.g. $SVM_NAME will remain literally "$SVM_NAME".

If you pass a SVM name begining with "$" to ONTAP you may well get the error
above ...

Try changing your script to do something simple first e.g. run a single word
command such as "version". Does that work?

> The script is so simple it's embarrassing. Define a few variables and
> optargs, build 3 simple SSH commands to send to the toaster, and run them.
> Everything up until these commands reach the toaster is working as
> expected. It just breaks when it gets there.
If your script is so simple, you should show it.

By way of example, here's one I wrote as a test:
[root@agrajag ~]# cat toast
#!/bin/sh -

# Goal:
# [root@agrajag ~]# ssh admin@192.168.8.10 'snapshot show -vserver stowa-02 -volume vol0 -snapshot nightly.0'

USER="admin"
SSHOPTS="-xT"
ONTAPOPTS="set diag"
FILER="192.168.8.10"
SVM="stowa-02"
CMD="$ONTAPOPTS ; snapshot show -vserver $SVM -volume vol0 -snapshot nightly.0"

ssh $SSHOPTS $USER@$FILER $CMD


The ONTAP command line is built up by adding variables to "$CMD".

That works for me here (via ssh from UNIX to an ONTAP 9.7 simulator)
Of course in reality there should be more error checking and parsing ...

Alternatively, use Ansible ;-)

Cheers,
Robb.

_______________________________________________
Toasters mailing list
Toasters@teaparty.net
https://www.teaparty.net/mailman/listinfo/toasters