How do I create a directory on remote host if it doesn't exist without ssh-ing in?

Viewed 75202

I'm not sure if this is possible or not. Basically, I'm writing a script that allows me to scp a file to my hosting. This is it so far. Argument 1 is the file and argument 2 is the folder I want it to be placed in on the remote server:

function upload {
    scp $1 myusername@ssh.myhost.net:$2
}

As you may/may not know, if the directory I specify when I call the function doesn't exist, then the transfer fails. Is there a way to check if the directory exists in the function and if it doesn't, create it.

I would prefer not having to ssh in every time and create the directory, but if I have got no choice, then I have got no choice.

6 Answers

sshfs be fancy!

Example .ssh/config

Host your-host
  HostHame example.com
  User name
  IdentitiesOnly yes
  IdentityFile ~/.ssh/private_key

Local setup aside from above only requires a target mount point...

sudo mkdir /media/your-host
sudo chown ${USER}:${USER} /media/your-host

... after which things like mounting and un-mounting are far simpler to script.

Mount

sshfs your-host:within-home/some-dir /media/your-host

Unmount

fusermount -u /media/your-host

The best part about this approach, when a server allows it, is that locally running scripts can interact with the remote file system. Meaning that things like...

if ! [ -d "/media/your-host/nowhere" ]; then
  mkdir -vp "/media/your-host/nowhere"
fi

... become possible among many other tricks that can be performed via such mounting magics.

Related