小编Mar*_*ryl的帖子

使用 Paramiko 将文件从远程目录复制到远程子目录

如何将远程服务器中的文件复制/maindir/fil1.txt到子目录/maindir/subdir/file1.txt。我使用 实现了 SFTP paramiko。但它总是检查要复制的本地路径。

filename_full_path='/maindir/fil1.txt'
destfilename_full_path='/maindir/subdir/file1.txt'
sftp.put(filename_full_path, destfilename_full_path)
Run Code Online (Sandbox Code Playgroud)

如何告诉SFTP本地路径也在远程主机中?

python sftp paramiko

1
推荐指数
1
解决办法
1万
查看次数

使用包含 @ 的密码使用 PHP 连接到 FTP

我有以下问题:

我需要连接到 FTP 并读取一个 CSV 文件。主要问题是它的密码有@、$、%...我如何连接特殊字符?我尝试了以下几种连接方式:

文件打开

$filename = 'ftp://user:p@s($word@ftp.myftp.url/file.csv'; 
$handle = fopen($filename, "r") or die("Error");
Run Code Online (Sandbox Code Playgroud)

FTP登录

$ftp_server = "ftp.myftp.url/file.csv";
$ftp_user = "user";
$ftp_pass = "p@s($word";
$conn_id = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login_result = ftp_login($ftp_server, $ftp_user, $ftp_pass) or die("Could not connect to 2");
$data = file_get_contents('ftp.myftp.url/file.csv');
Run Code Online (Sandbox Code Playgroud)

感谢大家!

php ftp special-characters

1
推荐指数
1
解决办法
2511
查看次数

在 C# 中通过 SSH.NET 进行多跳 SSH

我正在通过 SSH 连接到一台 Linux 机器,并再次希望通过 SSH 连接到另一台 Linux 机器来执行一些 Perforce 任务。

using (SshClient ssh = new SshClient("ip address","username", "pwd"))
{
    ssh.Connect();
    command = ssh.CreateCommand("ssh hostname");
    result = command.Execute();
    Console.WriteLine(result);
}
Run Code Online (Sandbox Code Playgroud)

其中ssh hostname无密码的ssh。如何控制第二个 SSH 会话并向其传递命令?

甚至探索了该CreateShell功能,但似乎不建议自动化。

.net c# ssh ssh.net

1
推荐指数
1
解决办法
2642
查看次数

使用 Java 中的 JSch 列出 SFTP 服务器上目录的完整层次结构

我想使用 JSch 在远程位置显示目录的完整层次结构。该位置有多个文件夹,一个文件夹可能有也可能没有文件。

我写的代码(参考SFTP Read all files in directory):

sftpChannel.cd(remotePath);
Vector<String> files = sftpChannel.ls("*");
List<String> ret=new ArrayList<>();
for (int i = 0; i < files.size(); i++)
{
    Object obj = files.elementAt(i);
    if (obj instanceof com.jcraft.jsch.ChannelSftp.LsEntry)
    {
        LsEntry entry = (LsEntry) obj;
        if (true && !entry.getAttrs().isDir())
        {
            ret.add(entry.getFilename()+"file");
        }
        if (true && entry.getAttrs().isDir())
        {
            if (!entry.getFilename().equals(".") && !entry.getFilename().equals(".."))
            {
                ret.add(entry.getFilename()+"folder");
            }
        }
    }
}
System.out.println(ret);
Run Code Online (Sandbox Code Playgroud)

此代码仅显示顶级文件夹名称,不会读取这些文件夹中的文件。

我正在使用 jsch-0.1.54。

谢谢

java ssh sftp jsch

1
推荐指数
1
解决办法
2504
查看次数

使用 Paramiko 的 SFTPClient 在远程路径中使用通配符

我想将文件从远程服务器复制到本地。

import paramiko
paramiko.util.log_to_file('/tmp/paramiko.log')

# open transport
username = "user"
host="example.com"
port = 22
transport = paramiko.Transport((host, port))
transport.start_client()
private_key_file = "/home/user/.ssh/id_rsa"
agent = paramiko.Agent()
key = paramiko.RSAKey.from_private_key_file(private_key_file)
transport.auth_publickey(username, key)

# get sftp client
sftp = paramiko.SFTPClient.from_transport(transport)
source = "/home/user/user_1.csv"
target = "/home/local/local_sftp.txt"
sftp.get(x[0], x[1])
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,但我想使用source = "/home/user/user_*.csv"但未评估此通配符。有人可以帮我解决这个问题。

我找到了一种解决方案,SCPClient但无法解决SFTPClient.

python sftp paramiko

1
推荐指数
1
解决办法
2623
查看次数

为什么 Inno Setup 常量 {userdesktop} 在 OutputDir 指令中不起作用以及如何修复它?

我创建了 Inno Setup 脚本,它运行良好,但我想更改OutputDir为在我的桌面上创建输出文件。但是不是在桌面上创建输出文件,而是{userdesktop}在同一目录中创建子文件夹,脚本所在的位置和输出在其中。

到目前为止我找到了解决方案,但我相信应该有更好的方法。我错过了什么?

; these attempts didn't work
[Setup]
OutputDir={userdesktop}
; some more attampts:
OutputDir=userdesktop
OutputDir=userdesktop:
OutputDir="{userdesktop}"

; this workaround worked for me
[Setup]
OutputDir=userdocs:..\Desktop
Run Code Online (Sandbox Code Playgroud)

inno-setup

1
推荐指数
1
解决办法
255
查看次数

如何解决“paramiko.ssh_exception.SSHException:无法从ssh-agent获取密钥”

我正在尝试使用 Paramiko Python 模块通过 SSH 连接到远程服务器。在 CentOS 7 服务器上使用 Python 3.6.7 版安装。但是收到以下错误。

python
import paramiko
>>> ssh = paramiko.SSHClient()
>>> ssh.load_system_host_keys()
>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> ssh.connect("19.16.2.2", username="user1", password="pass")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/paramiko/client.py", line 424, in connect
    passphrase,
  File "/usr/local/lib/python3.6/site-packages/paramiko/client.py", line 643, in _auth
    self._agent = Agent()
  File "/usr/local/lib/python3.6/site-packages/paramiko/agent.py", line 372, in __init__
    self._connect(conn)
  File "/usr/local/lib/python3.6/site-packages/paramiko/agent.py", line 68, in _connect
    raise SSHException('could not get keys from ssh-agent')
paramiko.ssh_exception.SSHException: could not get keys from …
Run Code Online (Sandbox Code Playgroud)

python ssh centos paramiko python-3.x

1
推荐指数
1
解决办法
6606
查看次数

如何使用pysftp检查SFTP中是否存在文件?

我在 etl 工作(第一次),我需要从客户端的 SFTP 中提取一些文件。我的问题是,文件数量是可变的,所以我需要检查,如果文件中存在,并得到它,该文件格式,如“_文件YYYY-MM-DD -number- ñ ”,其中YYYY-MM-DD是当前的日期和n是文件的编号,因此如果有 7 个文件,我必须查找:

  • file_2019-08-25-number-1
  • file_2019-08-25-number-2

直到现在我发现我可以做这样的事情

cnopts = pysftp.CnOpts()
with pysftp.Connection(host=host, port=port, username=username, password=password, cnopts=cnopts) as sftp:
    files = sftp.listdir(directory)
Run Code Online (Sandbox Code Playgroud)

我如何在那里的文件中找到?

python sftp pysftp

1
推荐指数
1
解决办法
4492
查看次数

Python pysftp put_r 在 Windows 上不起作用

我想使用 pysftp 0.2.8 将多个文件从 Windows 目录上传到 SFTP 服务器。我已经阅读了文档,它建议使用put_dorput_r但两者都给我以下错误:

OSError:无效路径:

sftp_local_path = r'C:\Users\Swiss\some\path'

sftp_remote_path = '/FTP/LPS Data/ATC/RAND/20191019_RAND/XML'

with pysftp.Connection("xxx.xxx.xxx.xxx", username=myUsername, password=myPassword) as sftp:
    with sftp.cd(sftp_remote_path):
        sftp.put_r(sftp_local_path, sftp_remote_path)
        for i in sftp.listdir():
            lstatout=str(sftp.lstat(i)).split()[0]
            if 'd' in lstatout: print (i, 'is a directory')

sftp.close()
Run Code Online (Sandbox Code Playgroud)

我希望能够将本地目录中的所有文件或选定文件复制到 SFTP 服务器。

python upload sftp pysftp

1
推荐指数
1
解决办法
1433
查看次数

你如何检查记录指针在 Object Pascal / Delphi 中是否没有值?

我正在尝试在 Delphi 中创建一个链表实现,但无法创建节点,因为我需要检查头指针是否为空。我现在使用的代码如下所示:

procedure LinkedList.addNode(newNode: Node);
var lastNode: Node;
begin
if pHead = nil then
  pHead := @newNode
else
   lastNode := peekLastNode(pHead^);
   lastNode.pNext := @newNode;
end;
Run Code Online (Sandbox Code Playgroud)

程序在添加一个元素后就冻结了,所以 nil 部分是无限期的问题。

这是整个程序:

program LinkedListImplementation;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;
type
  Node = record
    data: string;
    pNext: ^Node;
  end;
type
  LinkedList = class
    pHead: ^Node;
    function peekLastNode (currentNode: Node) : Node;
    function listToString(currentNode: Node) : String;
    procedure addNode (newNode: Node);
  end;

//the initial parameter for this function is LinkedList.pHead^
function LinkedList.peekLastNode (currentNode: …
Run Code Online (Sandbox Code Playgroud)

delphi pascal pointers

1
推荐指数
1
解决办法
245
查看次数