天道酬勤,学无止境

sftp

can you run half a script in bash and the other half in expect

Im trying to make a script to automate ssh login and download of a file for multiple ip addresses that are kept in a file, im using a for i in $(cat /dir/file), problem is the cat function is working in expect so i cant use it on a script that is interpreted with expect. I wanted to know if it is possible to make half of the script be interpreted by bash and the other half by expect like this #!/bin/bash code........ #!/usr/bin/expect code........ my code now looks like this #!/bin/bash expect <<-EOF spawn sftp user@server expect "*password:" { send "password\r" } expect "*" { send "get /home

2021-10-23 17:39:31    分类:问答    bash   ssh   sftp   expect

检查与 PHP 中的 ssh2 函数的连接(check connection with ssh2 functions in PHP)

问题 我需要检查与功能 http://php.net/manual/en/function.ssh2-connect.php 的连接 但如果我做这样的检查 $connection = ssh2_connect('myserver.com', 22); if (!$connection){ echo 'no connection'; }else{ echo 'connection ok'; } 我从不进入“回声‘无连接’;” 你能解释一下为什么吗? 以及如何进行这样的检查? 提前致谢! 回答1 基本上,您应该使用 ssh2_auth_password 或 ssh2_auth_public_key_file 等函数并结合 ssh2_connect 函数来检查连接是否经过身份验证 $connection = ssh2_connect("myserver.com", 22); if(ssh2_auth_password($connection, "username", "password")){ echo "connection is authenticated"; } else{ echo "failed!" } 希望这可以帮助! 回答2 这取决于您的服务器。 尝试连接到一些不存在的,看看会发生什么。 如果您只需要检查连接,那么您也可以使用类似 http://php.net/manual

2021-10-23 16:24:39    分类:技术分享    php   ssh   sftp

sshtools.SftpClient.put 失败并显示“没有这样的文件”(sshtools.SftpClient.put failing with "No such file")

问题 我继承了一个基于 Java 的项目,其中包括一个通过 SFTP 将文件上传到第三方服务器的 cron 作业。 这是相关的代码。 String filePath = IUtil.getInstance().getProperties("cheetah_sftp_filepath"); try{ SshClient ssh = new SshClient(); ssh.connect(host, port); //Authenticate PasswordAuthenticationClient passwordAuthenticationClient = new PasswordAuthenticationClient(); passwordAuthenticationClient.setUsername(userName); passwordAuthenticationClient.setPassword(password); int result = ssh.authenticate(passwordAuthenticationClient); if(result != AuthenticationProtocolState.COMPLETE){ throw new Exception("Login to " + host + ":" + port + " " +

2021-10-23 14:55:43    分类:技术分享    java   sftp   j2ssh

sshtools.SftpClient.put failing with "No such file"

I've inherited a Java based project that includes a cron job to upload a file via SFTP to a third-party server. Here's the relevant code. String filePath = IUtil.getInstance().getProperties("cheetah_sftp_filepath"); try{ SshClient ssh = new SshClient(); ssh.connect(host, port); //Authenticate PasswordAuthenticationClient passwordAuthenticationClient = new PasswordAuthenticationClient(); passwordAuthenticationClient.setUsername(userName); passwordAuthenticationClient.setPassword(password); int result = ssh.authenticate(passwordAuthenticationClient); if(result != AuthenticationProtocolState

2021-10-23 12:59:07    分类:问答    java   sftp   j2ssh

如何使用 django-storage sftp 下载文件?(How to download file using django-storage sftp?)

问题 我正在使用 django 存储模块使用 sftp 将文件存储在一个位置,现在我们需要从 sftp 下载相同的文件。 有什么建议吗? 模型.py from storages.backends.sftpstorage import SFTPStorage SFS = SFTPStorage() class Configurations(BaseModel): name = models.CharField(max_length=150, unique=True) file = models.FileField(upload_to='configurations', storage=SFS) descriptions = models.TextField(null=True, blank=True) 设置.py DEFAULT_FILE_STORAGE = 'storages.backends.sftpstorage.SFTPStorage' SFTP_STORAGE_HOST = '127.0.0.1' SFTP_STORAGE_ROOT = '/var/www/media/' SFTP_STORAGE_PARAMS = { 'username': 'root', 'password': 'password', 'allow_agent': False, 'look_for

2021-10-23 08:18:48    分类:技术分享    python   django   django-rest-framework   sftp

如何使用Paramiko getfo从SFTP服务器下载文件到内存进行处理(How to use Paramiko getfo to download file from SFTP server to memory to process it)

问题 我正在尝试使用 Paramiko 从 SFTP 下载 CSV 文件(内存中)并将其导入到熊猫数据帧中。 transport = paramiko.Transport((server, 22)) transport.connect(username=username, password=password) sftp = paramiko.SFTPClient.from_transport(transport) with open(file_name, 'wb') as fl: sftp.getfo(file_name, fl, callback=printTotals) df = pd.read_csv(fl, sep=' ') 下面的代码失败,告诉我: OSError:文件未打开以供读取 我假设我需要某种缓冲区或文件,例如用于fl对象,因为 open 需要一个文件。 我对这一切都比较陌生,所以如果有人可以提供帮助,我会很高兴。 回答1 仍然允许您使用进度回调的简单解决方案是: 使用 BytesIO 类文件对象将下载的文件存储到内存中; 在开始阅读之前,您必须在下载文件后将文件指针找回文件开头。 with io.BytesIO() as fl: sftp.getfo(file_name, fl, callback=printTotals) fl.seek(0) df = pd

2021-10-23 06:47:40    分类:技术分享    python   pandas   io   sftp   paramiko

尽管文件已上传,但 Python pysftp.put 会引发“无此类文件”异常(Python pysftp.put raises “No such file” exception although file is uploaded)

问题 我正在使用 pysftp 连接到服务器并向其上传文件。 cnopts = pysftp.CnOpts() cnopts.hostkeys = None self.sftp = pysftp.Connection(host=self.serverConnectionAuth['host'], port=self.serverConnectionAuth['port'], username=self.serverConnectionAuth['username'], password=self.serverConnectionAuth['password'], cnopts=cnopts) self.sftp.put(localpath=self.filepath+filename, remotepath=filename) 有时它没有错误,但有时它会正确放置文件,但会引发以下异常。 该文件由服务器上运行的另一个程序读取和处理,因此我可以看到该文件在那里并且没有损坏 File "E:\Anaconda\envs\py35\lib\site-packages\pysftp\__init__.py", line 364, in put confirm=confirm) File "E:\Anaconda\envs\py35\lib\site-packages\paramiko

2021-10-22 12:42:49    分类:技术分享    python   sftp   pysftp

在 Python 中通过 SFTP (Paramiko) 上传文件会导致 IOError: Failure(File upload through SFTP (Paramiko) in Python gives IOError: Failure)

问题 目标:我正在尝试通过 Python 中的 Paramiko 使用 SFTP 在服务器 pc 上上传文件。 我所做的:为了测试该功能,我使用了我的本地主机 (127.0.0.1) IP。 为了实现这一点,我在 Stack Overflow 建议的帮助下创建了以下代码。 问题:当我运行此代码并输入文件名时,尽管处理了该错误,但仍收到“IOError:Failure”。 这是错误的快照: import paramiko as pk import os userName = "sk" ip = "127.0.0.1" pwd = "1234" client="" try: client = pk.SSHClient() client.set_missing_host_key_policy(pk.AutoAddPolicy()) client.connect(hostname=ip, port=22, username=userName, password=pwd) print '\nConnection Successful!' # This exception takes care of Authentication error& exceptions except pk.AuthenticationException: print 'ERROR : Authentication

2021-10-22 11:09:21    分类:技术分享    python   ssh   sftp   paramiko

通过 SFTP 从服务器读取大型动态文件的结尾(Reading end of huge and dynamic file via SFTP from server)

问题 我正在尝试找到一种方法,从服务器通过 SFTP 读取巨大的动态日志文件的末尾(例如从末尾开始的 20-30 行),并将该点保存到我阅读的地方,如果我需要更多行,请阅读更多从这一点上。 我尝试过的所有操作都需要很长时间,我尝试在机器上复制此文件,然后使用ReversedLinesFileReader从末尾读取,因为此方法需要File对象,当通过 SFTP 时,您将只获得InputStream ,需要很多时间下载文件。 还尝试计算行数并从 n 行读取,但也花费了太长时间并抛出异常,因为此时文件已被修改。 另一种方法是我尝试通过 SSH 连接并使用tail -100并获得所需的结果,但只是一次,因为下次我也会获得新的日志,但我需要更上一层楼。 有没有一种快速的方法来获取文件的结尾并保存该点并稍后阅读更多的内容? 任何的想法? 回答1 您没有说明您使用的是什么 SFTP 库,但使用最广泛的 Java SSH/SFTP 库是 JSch,所以我假设您正在使用它。 SFTP 协议具有对远程文件执行随机访问 I/O 的操作。 不幸的是,JSch SFTP 客户端并未公开所有操作。 但是,它确实具有允许跳过远程文件的第一部分的 get 操作版本(用于从远程服务器获取文件)。 例如,您可以使用这些操作之一来读取文件的最后 10 KB。 一些 JSch get操作返回一个InputStream 。

2021-10-22 05:52:31    分类:技术分享    java   sftp

Linux VSFTPD:将“特定 SFTP 用户”囚禁在家中?(Linux VSFTPD : Jail a "Specific SFTP User" to its home?)

问题 我同时使用 Redhat 和 CentOS。 我以前想将“特定用户”关在家里。 然后我按照这个答案得到了它。 当用户(比方说,使用 FileZilla)使用: 协议: FTP .. 没事! 但同样,当用户连接时: 协议: SFTP (在 FileZilla 设置中) .. 该特定用户的监禁不再起作用。 还是可以浏览的。 我怎样才能让它拥有: 在vsFTPd ,当使用Protocol: SFTP时,将特定用户关在其家中。 谢谢! 回答1 嗨,是的 sftp 在端口 22 上使用 ssh 配置,http:/thegeekstuff.com/2012/03/chroot-sftp-setup 将使您成为用户的 jailroot。 您必须修改 ssh 配置文件以监禁 root 用户。 感谢和问候, 阿洛克

2021-10-22 05:09:00    分类:技术分享    linux   sftp   home-directory   jail   vsftpd