sftp命令详解

Looks like sftp doesn't  distinguish Binary files and ASCII files at all. That means it doesnt support the commands like 'bin' or 'ascii' that ftp supports.

sftp> help
Available commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
chgrp grp path                     Change group of file 'path' to 'grp'
chmod mode path                    Change permissions of file 'path' to 'mode'
chown own path                     Change owner of file 'path' to 'own'
df [-hi] [path]                    Display statistics for current directory or
                                   filesystem containing 'path'
exit                               Quit sftp
get [-P] remote-path [local-path]  Download file
help                               Display this help text
lcd path                           Change local directory to 'path'
lls [ls-options [path]]            Display local directory listing
lmkdir path                        Create local directory
ln oldpath newpath                 Symlink remote file
lpwd                               Print local working directory
ls [-1aflnrSt] [path]              Display remote directory listing
lumask umask                       Set local umask to 'umask'
mkdir path                         Create remote directory
progress                           Toggle display of progress meter
put [-P] local-path [remote-path]  Upload file
pwd                                Display remote working directory
quit                               Quit sftp
rename oldpath newpath             Rename remote file
rm path                            Delete remote file
rmdir path                         Remove remote directory
symlink oldpath newpath            Symlink remote file
version                            Show SFTP version
!command                           Execute 'command' in local shell
!                                  Escape to local shell
?                                  Synonym for help

 

===================================================

Usage: sftp [options]...
              [profile|[user@]host[#port]]

Access remote files using the Secure Shell protocol.

Options:
  -b buffer_size_bytes  Define maximum buffer size for one
                        request (default: 32768 bytes).
  -B batch_file         Use batch file.
  -D, --debug=LEVEL     Set debug level string to LEVEL.
  -N max_requests       Define maximum number of requests sent in
                        parallel (default: 10).
  -P port               Connect to this SSH port on the remote
                        machine (default: 22).
  -v, --verbose         Use verbose mode (equal to `-D 2').
  --keep-alive=VALUE    Send no-operational packet to the server,
                        each specified amount of time.
  --tcp-connect-timeout=VALUE
                        Overwrite default timeout value that is
                        used when connecting to a server.
  -i file               Use private keys defined in identification
                        file to authenticate with public key method.
  --identity=ID         Use private key 'id' as user identification.
                        The 'id' can be either key id, key hash or
                        a key file name.
  --identity-key-id=ID  Use key id as a user identification.
  --identity-key-hash=ID
                        Use key hash as a user identification.
  -K, --identity-key-file=FILE
                        Use key file as a user identification.
  --allowed-authentications=METHODS
  --aa=METHODS
                        Allow only selected methods in user
                        authentication. The 'methods' is a comma
                        separated list of authentication methods.
                        Giving value 'help' lists available methods.
  --kip                 Same as '--aa=keyboard-interactive,password'.
  -c, --ciphers=CIPHERS Allow only selected ciphers to be used.
                        Giving value 'help' lists available ciphers.
  --macs=MACS           Allow only selected MACs to be used.
                        Giving value 'help' lists available MACs.
  --kexs=KEXS           Allow only selected KEX methods to be used.
                        Value 'help' lists available KEX methods.
  --hostkey-algorithms=HOSTKEYALGORITHMS
                        Allow only selected hostkey algorithms to be
                        used. Value 'help' lists available hostkey
                        algorithms
  -C                    Disables compression.
  +C                    Enables zlib compression.
  --compressions=METHODS
                        Allow selected compression methods.
                        Giving value 'help' lists available methods.
  --exclusive           Opens always a new connection, does not share
                        connection.
  --fips                Performs checksums using the FIPS
                        cryptographic library.
  --password=           Set user password. Giving the PASSWORD
        PASSWORD|       directly as the argument is not secure!
        file://FILE|    Give either a path to FILE containing the
        extprog://PROG  password, or a path to external program
                        that will output the password.
  --plugin-path=PATH    Set plugin path to PATH. This is only
                        used in FIPS mode.
  -V, --version         Display program version and exit.
  -q, --quiet           Suppress the printing of error, warning and
                        informational messages.
  -h, --help            Display this help and exit.

 

=========

StringBuffer cmd = new StringBuffer(sftpSSH);
  String space = " ";
  cmd.append(space).append("PUT");
  cmd.append(space).append(ftpInfo.getFtpUser());
  cmd.append(space).append(ftpInfo.getFtpDestination());
  cmd.append(space).append(ftpInfo.getFtpPort());
  cmd.append(space).append(localDir);
  cmd.append(space).append(ftpInfo.getFtpFolder());
  cmd.append(space).append(fileName);
  
  String remoteFileName = ftpInfo.getFtpFileName();
  if(ftpInfo.getFtpFileDateFormat()!=null && ftpInfo.getFtpFileType()!=null)
  {
   Date d = new Date();
   String s  = DateFormatUtils.format(d,ftpInfo.getFtpFileDateFormat());
   remoteFileName=remoteFileName+s;
   remoteFileName=remoteFileName+'.'+ftpInfo.getFtpFileType();
  }
  cmd.append(space).append(remoteFileName);

  logger.info("call sftp shell command:" + cmd.toString());
  Process proc = Runtime.getRuntime().exec(cmd.toString());
   

BufferedReader in = new BufferedReader (new InputStreamReader(proc.getInputStream()));
        BufferedReader inE = new BufferedReader (new InputStreamReader(proc.getErrorStream()));
        StringBuffer errMsg = new StringBuffer();
        String s = null;
        errMsg.append("\nSFTP script Stand Output:\n");
        while ((s = in.readLine()) != null){
            s = s.trim();
            errMsg.append(s+"\n");
        }
        errMsg.append("\nSFTP script Err Output:\n");
        while((s = inE.readLine()) != null){
            if(s.trim().length() > 0){
                errMsg.append(s+"\n");                   
            }
        }
        return errMsg.toString();

=====================================

if [ $CMD = "PUT" ]; then

  logInput $1 $2 $3 $4 $5 $6 $7 $8
  checkLocalDir $5
  checkFileExist "$5$FILESEP$7" $CMD
  
  if [ "$5$FILESEP$7" != "$5$FILESEP$8" ]; then
   cp "$5$FILESEP$7" "$5$FILESEP$8"
  fi
  
        BATCHFTPFILE=/tmp/sftpUtilBatch
        echo lcd $5 > $BATCHFTPFILE
        echo cd $6 >> $BATCHFTPFILE
        echo put $8 >> $BATCHFTPFILE

  returnC=`/usr/local/bin/sftp -B $BATCHFTPFILE $2@$3#$4`
  
  if [ $? = 1 ]; then
   echo $returnC >>$LOGFILE
   echo $returnC
         exit 1
  fi
  
  if [ "$5$FILESEP$7" != "$5$FILESEP$8" ]; then
   rm "$5$FILESEP$8"
  fi
  
  echo $returnC >>$LOGFILE
  echo $returnC
        exit 0
fi

 ==================

sftp -i ~/.ssh2/identification

.ssh2/下包含identification 文件和xxx.key.pub

identification的内容是key xxx.key.pub

xxx.key.pub的内容是密钥

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值