在sftp中创建目录和子目录的脚本

时间:2020-02-04 15:24:31

标签: bash shell sftp

我正在运行一个Bash脚本,将文件上传到sftp位置。但是,在上传文件之前,我需要检查sftp目录和子目录是否存在。如果存在,则上传文件;如果不存在,则创建目录和子目录,然后上传文件。我该如何实现?

mkdir -p在sftp中不起作用。不幸的是ssh访问被禁用。我已经尝试过:

for i in `ls -1t | head -1`
do
        echo $i
        zip -r $i_file.zip $i
        sleep 2
        sshpass -p "passowrd" sftp -oPort=22 username@sftpserver <<< $'cd /file \n mkdir file1/file2/file3 \n cd /file1/file2/file3 \n put '$I_file.zip''
done

2 个答案:

答案 0 :(得分:0)

首先,检查目录是否存在(如果不尝试此操作),我不使用sftp客户端播放该目录,因为我也是新手,但可以尝试一下。我很想听听您的反馈或其他任何人的反馈。

#!/bin/bash
path="$1"
if [ ! -d "$path" ]
then
    IFS='/' # space is set as delimiter
    read -ra ADDR <<< "$path" # str is read into an array as tokens separated by IFS'
    cdir="$PWD"
    for i in "${ADDR[@]}"; do # access each element of array
        cdir+="/$i"
        mkdir "$cdir"
    done
fi

答案 1 :(得分:0)

我已经尝试过:

$i_file.zip
  • ${i}_file.zip-如果要将标识符字符附加到变量扩展中,则必须包含名称:cd /file \n mkdir file1/file2/file3 \n cd /file1/file2/file3 \n
  • cd /file1 \n mkdir file2 \n mkdir file2/file3 \n cd file2/file3 \n-您更改为 / file ,(尝试)创建 / file / file1 / file2 / file3 ,然后尝试更改为 > / file1 / file2 / file3 。也许您是说$I_file.zip
  • I-您使用大写字母i代替大括号${i}_file.zip,用大括号<form class="main__form" [formGroup]="registrationForm" (ngSubmit)="formSubmit()"> <div class="row"> <div class="col-md-6"> <div class="form-group"> <input type="text" class="form-control" id="firstName" aria-describedby="firstName" placeholder="John" required name="accountName" formControlName="accountName"> <label for="firstName">Account Name*</label> </div> </div> <button type="submit" [disabled]= "!registrationForm.valid" ><span> Submit Now!</span></button> </div> </form>