需求来源
- 喜欢绿化版软件
- picgo命令行是也是要NPM环境
Python实现
请自行替换代码中的返回链接部分
# -*- coding: utf-8 -*-
import argparse
import paramiko
import os
def sftp_upload(hostname, port, username, password, *args):
transport = paramiko.Transport((hostname, port))
transport.connect(username=username, password=password)
sftp = paramiko.SFTPClient.from_transport(transport)
if sftp:
print("STFP Connect Success")
print("Upload Success:")
current_dir = sftp.getcwd() or sftp.normalize('.')
for local_file_path in args:
if local_file_path:
if os.path.isfile(local_file_path):
remote_path = os.path.join(current_dir,"web/"+os.path.basename(str(local_file_path)))
sftp.put(local_file_path, remote_path)
print(f"https://pic.skycyan.cn/{os.path.basename(local_file_path)}")
else:
print(f"File {local_file_path} does not exist.")
sftp.close()
transport.close()
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='SFTP 文件上传')
parser.add_argument('hostname', type=str, help='SFTP服务器主机名或IP地址')
parser.add_argument('port', type=int, help='SFTP服务器端口号')
parser.add_argument('username', type=str, help='SFTP服务器用户名')
parser.add_argument('password', type=str, help='SFTP服务器密码')
parser.add_argument('file_paths', nargs='*', type=str, help='要上传的文件路径')
args = parser.parse_args()
sftp_upload(args.hostname, args.port, args.username, args.password, *args.file_paths)
C#实现
C #增了参数传递远程路径的功能
using System;
using Renci.SshNet;
if (args.Length < 4)
{
Console.WriteLine("Usage: SftpUpload <host>主机地址 <port>端口 <username>用户名 <password>密码 <remoteRootPath>远程路径 <localFilePath>本地文件路径 ");
return;
}
string host = args[0];
int port = int.Parse(args[1]);
string username = args[2];
string password = args[3];
string remoteRootPath = args[4];
string[] filePathArgs = new ArraySegment<string>(args, 5, args.Length - 5).ToArray();
Console.WriteLine("Upload Success:");
foreach (string filePathArg in filePathArgs)
{
try
{
using (var client = new SftpClient(host, port, username, password))
{
client.Connect();
using (var fileStream = System.IO.File.OpenRead(filePathArg))
{
string remoteFilePath = System.IO.Path.GetFileName(filePathArg);
client.UploadFile(fileStream, $"{remoteRootPath}/{remoteFilePath}");
Console.WriteLine($"https://pic.skycyan.cn/{remoteFilePath}");
}
client.Disconnect();
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099