精华内容
下载资源
问答
  • linux 远程文件及文件夹传送

    千次阅读 2018-06-07 23:23:14
    .Linux下目录复制:本机->远程服务器 scp -r /home/code/Egg root@192.168...2.Linux下目录复制:远程服务器->本机 scp -r root@192.168.0.1:/home/web /home/code/Egg ps: -r 是目录递归的意思 ...

    .Linux下目录复制:本机->远程服务器

    scp -r /home/code/Egg root@192.168.0.1:/home/web

    Egg为源目录,/home/web为目标目录

    2.Linux下目录复制:远程服务器->本机

    scp -r root@192.168.0.1:/home/web /home/code/Egg

    ps: -r 是目录递归的意思

    展开全文
  • [[user@]host2:]file2 说明只指定了源文件,没有指定目标文件夹。由于是传到本地,所以不用添加服务器用户名和ip地址,只用指定存储的文件夹就行 完整命令如下: scp -r root@192.168.1.104:/usr/local/nginx/...

    网上查到的命令是

    scp -r root@192.168.1.104:/usr/local/nginx/html/webs/diff 

    但是执行时提示

    usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
               [-l limit] [-o ssh_option] [-P port] [-S program]
               [[user@]host1:]file1 ... [[user@]host2:]file2
    

     说明只指定了源文件,没有指定目标文件夹。由于是传到本地,所以不用添加服务器用户名和ip地址只用指定存储的文件夹就行

    完整命令如下:

    scp -r root@192.168.1.104:/usr/local/nginx/html/webs/diff /usr/local/nginx/temp_file

    参考:https://www.cnblogs.com/no7dw/archive/2012/07/07/2580307.html

    展开全文
  • Linux远程拷贝之ftp与scp命令 在Linux下使用文件远程复制总结
  • 基于python的 Linux远程文件同步工具要求设计思路windows上两个文件夹的同步思路所需的包第一版本:单纯复制源文件夹中文件至目标文件夹第二版本:实现复制嵌套文件夹第三版本:实现已有文件不在复制第四版本:实现...

    要求

    学校程序设计周的题目,值得一提的是老师不准使用SFTP传输文件,要求自己手写Socket,不得不说这样大大增加了出错的可能。
    题目四:Linux环境下,文件内容同步工具的设计与实现。
    要求:
    1.分为服务器端与客户端。
    2.客户端可以并发与服务器端进行通信。
    3.实现客户端之间某个目录内容之间的同步。即,A客户端的目录中添加了文件,则与之同步的客户端的相应目录也自动添加文件,如果删除了文件,则客户端也应该删除。
    4.客户端应该有良好的图形化界面。

    设计思路

    1.由于对Linux系统不熟悉,不可能直接在Linux上开发,应先尝试在Windows系统下实现两个文件夹同步。
    2.成功在Windows上实现同步后,思考如何将其移植到Linux上

    windows上两个文件夹的同步

    思路

    参考 https://www.cnblogs.com/geek-arking/p/10213449.html
    用 python os库中的函数可以较好的操作文件夹
    如 os.lisdir(path) 可以获得路径为path的所有文件名,通过listdir函数,遍历服务端的文件,判断哪些文件服务端有而客户端没有,进行复制操作。
    遍历客户端文件,判断哪些文件客户端有而服务端没有,进行删除操作。
    在同步过程中,先进行删除操作再进行复制操作最终实现文件同步。

    所需的包

    import os
    

    第一版本:单纯复制源文件夹中文件至目标文件夹

    #第一版本 单纯复制源文件夹到目标文件夹  无法复制多重文件夹 
    for filename in os.listdir(path_s):
        filename_s=path_s+os.sep+filename
        print("[*] Source : "+filename_s)
        filename_c=path_c+os.sep+filename
        print("[*] Client : "+filename_c)
        with open(filename_s,'rb') as f_s:
            with open(filename_c,'wb') as f_c:
                f_c.write(f_s.read())
    

    第二版本:实现复制嵌套文件夹

    #第二版本实现复制嵌套文件夹
    for filename in os.listdir(path_s):
        filename_s=path_s+os.sep+filename
        filename_d=path_d+os.sep+filename
        if os.path.isdir(filename_s):
            if not os.path.exists(filename_d):
                os.mkdir(filename_d)
    

    第三版本:实现已有文件不在复制

    主要是通过 os.path.exists()判断中是否存在这个文件,如果有则不再复制

    def copy_file(path_s,path_c):
        for filename in os.listdir(path_s):
            filename_s=path_s+os.sep+filename
            filename_c=path_c+os.sep+filename
            if os.path.isdir(filename_s):
                if not os.path.exists(filename_c):
                    os.mkdir(filename_c)
                copy_file(filename_s,filename_c)
            else:
                if os.path.exists(filename_c):
                    print('[*] Destin:',filename_c,'is already exists' )
                else:
                    print('[*] Source :',filename_s)
                    print('[*] Destin :',filename_c)
                    with open(filename_s,'rb') as f_s:
                        with open(filename_c,'wb') as f_c:
                            f_c.write(f_s.read())
    copy_file(path_s,path_c)
    

    第四版本:实现同步删除

    遍历客户端文件,判断哪些文件是客户端有而服务端没有的,进行删除操作。

    def delete_file(path_s,path_c):
        for filename in os.listdir(path_c):
            filename_c=path_c+os.sep+filename
            filename_s=path_s+os.sep+filename
            if os.path.isdir(filename_c):
                if not os.path.exists(filename_s):
                    clear_dir(filename_c)  #删除文件夹前清空
                    os.rmdir(filename_c)
                else:
                    delete_file(filename_s,filename_c)
            else:
                if os.path.exists(filename_s):
                    print('[*] Server :have ',filename_s)
                else:
                    os.remove(filename_c)
    

    在这里说明一下由于,非空文件夹是无法删除的,删除前需要清空文件夹

    def clear_dir(path):
        for filename in os.listdir(path):
            print(filename)
            filename_in=path+os.sep+filename
            if os.path.isdir(filename_in):
                clear_dir(filename_in)
                os.rmdir(filename_in)
            else:
                os.remove(filename_in)
    

    第五版本:实现Windows下文件同步工具

    def SYN(path_s,path_c):
        delete_file(path_s,path_c)
        copy_file(path_s,path_c)
        time.sleep(10)
        
    

    测试
    在这里插入图片描述

    Linux环境下两个文件夹的同步

    思路

    通过百度得知有一个库 paramiko 可以实现遍历远程文件夹

     port = 22
     t = paramiko.Transport((ServerAddress, port))
     t.connect(username=UserName, password=Password)
     object = paramiko.SFTPClient.from_transport(t)
     filenames_server=object.listdir(path_s)
    

    其中ServerAddress为远程主机的IP地址
    UserName为SSH登陆用户名
    Password为SSH登陆用户密码
    filenames_server中存放了远程主机对应路径的所有文件名

    所以我们已经有了遍历远程文件的方法,接着我们需要写一个Socket文件传输工具

    Socket传输文件

    参考 https://blog.csdn.net/mouday/article/details/79101951

    服务端

    import socket
    import os
    import hashlib
    def Server_Start():
        server = socket.socket()
    
        server.bind(("192.168.37.130", 6969))  # 绑定监听端口
    
        server.listen(5)  # 监听
    
        print("监听开始..")
    
        while True:
            conn, addr = server.accept()  # 等待连接
    
            print("conn:", conn, "\naddr:", addr)  # conn连接实例
    
            while True:
                data = conn.recv(1024)  # 接收
                if not data:  # 客户端已断开
                    print("客户端断开连接")
                    break
    
                print("收到的命令:", data.decode("utf-8"))
                cmd, filename = data.decode("utf-8").split(" ")
                if cmd == "get":
                    print("get_true")
                    if os.path.isfile(filename):  # 判断文件存在
                        print("file true  ",filename)
    
                        # 1.先发送文件大小,让客户端准备接收
                        size = os.stat(filename).st_size  # 获取文件大小
                        conn.send(str(size).encode("utf-8"))  # 发送数据长度
                        print("发送的大小:", size)
    
                        # 2.发送文件内容
                        conn.recv(1024)  # 接收确认
    
                        m = hashlib.md5()
                        f = open(filename, "rb")
                        for line in f:
                            conn.send(line)  # 发送数据
                            m.update(line)
                        f.close()
    
                        # 3.发送md5值进行校验
                        md5 = m.hexdigest()
                        conn.send(md5.encode("utf-8"))  # 发送md5值
                        print("md5:", md5)
        server.close()
    
    
    
    if __name__ == '__main__':
        Server_Start()
    

    客户端

    # 客户端
    
    import socket
    import os
    import hashlib
    import time
    
    
    def net_is_used(ip, port):   #判断端口是否被占用
        s = socket.socket()
        try:
            s.connect((ip, port))
            s.shutdown(2)
            print('%s:%d is unused' % (ip, port))
            return False
        except:
            print('%s:%d is used' % (ip, port))
            return True
    
    
    
    
    
    
    
    
    def socket_get(ip,port,path_s,path_c):
        client = socket.socket()  # 生成socket连接对象
        while (net_is_used(ip, port)):
            time.sleep(1)
        client.connect((ip,port))  # 连接
        content = "get "+path_s
        if content.startswith("get"):
            client.send(content.encode("utf-8"))  # 传送和接收都是bytes类型
            # 1.先接收长度,建议8192
            server_response = client.recv(1024)
            file_size = int(server_response.decode("utf-8"))
    
            print("接收到的大小:", file_size)
    
            # 2.接收文件内容
            client.send("准备好接收".encode("utf-8"))  # 接收确认
            path_filename = content.split(" ")[1]  # get filename-> filename
            filename = path_c
            # /home/server/server/x.x->/home/client/client/x.x
    
            f = open(filename, "wb")
            received_size = 0
            m = hashlib.md5()
    
            while received_size < file_size:
                size = 0  # 准确接收数据大小,解决粘包
                if file_size - received_size > 1024:  # 多次接收
                    size = 1024
                else:  # 最后一次接收完毕
                    size = file_size - received_size
    
                data = client.recv(size)  # 多次接收内容,接收大数据
                data_len = len(data)
                received_size += data_len
                print("已接收:", int(received_size / file_size * 100), "%")
    
                m.update(data)
                f.write(data)
    
            f.close()
    
            print("实际接收的大小:", received_size)  # 解码
    
            # 3.md5值校验
            md5_sever = client.recv(1024).decode("utf-8")
            md5_client = m.hexdigest()
            print("服务器发来的md5:", md5_sever)
            print("接收文件的md5:", md5_client)
            if md5_sever == md5_client:
                print("MD5值校验成功")
            else:
                print("MD5值校验失败")
        client.close()
    if __name__ == '__main__':
        socket_get("192.168.37.130",6969,"/home/server/server/2.txt","/home/client/client")
    
    

    所需环境及库

    VMware Workstation 创建两台Ubuntu虚拟机,一台为 Server,一台为 Client
    同时要保证 client 可以远程登陆 Server !
    同时要保证 client 可以远程登陆 Server !
    同时要保证 client 可以远程登陆 Server !
    所需库

    import paramiko
    import sys
    import os
    import time
    from PyQt5 import QtCore, QtGui, QtWidgets #界面
    

    Linux系统下,实现文件同步

    import hashlib
    import time
    from PyQt5 import QtCore, QtGui, QtWidgets
    import sys
    from socket_client import  socket_get
    from PyQt5.QtWidgets import QApplication, QMainWindow,QApplication, QWidget, QDialog, QLabel, QLineEdit, QPushButton, \
        QGridLayout, QVBoxLayout, QHBoxLayout, QMessageBox
    ServerAddress='192.168.37.130'
    UserName='server'
    Password=''
    ServerPath='/home/server/server'
    ClientPath='/home/client/client'
    
    
    #核心代码
    def sftp_exists(path,filename,object):
        result=filename in object.listdir(path)
        return result
    def sftp_isdir(path):
        result='.' in path
        return not result
    def copy_file(path_s,path_c,object,ip,port,operation):
        for filename in object.listdir(path_s):
            filename_s=path_s+os.sep+filename
            filename_c=path_c+os.sep+filename
            if sftp_isdir(filename_s):
                if not os.path.exists(filename_c):
                    operation.append('[*] clinet mkdir: '+ filename_c)
                    print('[*] clinet mkdir: ',filename_c)
                    os.mkdir(filename_c)
                copy_file(filename_s,filename_c,object,ip,port,operation)
            else:
                if os.path.exists(filename_c):
                    continue
                else:
                    socket_get(ip,port,filename_s,filename_c)
                    operation.append('[*] clinet get: '+ filename_c)
                    print('[*] client get: ',filename_c)
    def delete_file(path_s,path_c,object,ip,port,operation):
        for filename in os.listdir(path_c):
            filename_c=path_c+os.sep+filename
            filename_s=path_s+os.sep+filename
            if os.path.isdir(filename_c):
                if not sftp_exists(path_s+os.sep,filename,object):  #server没有对应文件夹彻底清空
    
                    operation.append('[*] client rmdir: '+ filename_c)
                    print('[*] client rmdir: ',filename_c)
                    clear_dir(filename_c)  #删除文件夹前清空
                    os.rmdir(filename_c)
                else:
                    operation.append('[*] client delete: '+ filename_c)  #递归清空文件夹内容
                    delete_file(filename_s,filename_c,object,ip,port,operation)
            else:
                if sftp_exists(path_s+os.sep,filename,object):
                    #get名为 temp的文件获取远程文件的MD5  用来与本地比对
                    temp_name=path_c+os.sep+'temp'
                    md5_server=socket_get(ip, port, filename_s, temp_name)
                    m=hashlib.md5()
                    f=open(filename_c,'rb')
                    while True:
                        b=f.read(8096)
                        if not b:
                            break
                        m.update(b)
                    md5_client=m.hexdigest()
                    f.close()
                    if(md5_client==md5_server):   #文件
                        os.remove(temp_name)
                        continue
                    else:
                        print('[*] client delete: ', filename_c)
                        os.remove(temp_name)
                        os.remove(filename_c)
                else:
                    operation.append('[*] client delete: '+ filename_c)
                    print('[*] client delete: ',filename_c)
                    os.remove(filename_c)
    def clear_dir(path):
        for filename in os.listdir(path):
            filename_in=path+os.sep+filename
            if os.path.isdir(filename_in):
                clear_dir(filename_in)
                os.rmdir(filename_in)
            else:
                os.remove(filename_in)
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(492, 600)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.Text = QtWidgets.QLabel(self.centralwidget)
            self.Text.setGeometry(QtCore.QRect(160, 30, 171, 71))
            self.Text.setObjectName("Text")
            self.ServerAddressEdit = QtWidgets.QLineEdit(self.centralwidget)
            self.ServerAddressEdit.setGeometry(QtCore.QRect(110, 150, 113, 20))
            self.ServerAddressEdit.setObjectName("ServerAddressEdit")
            self.UserNameEdit = QtWidgets.QLineEdit(self.centralwidget)
            self.UserNameEdit.setGeometry(QtCore.QRect(110, 180, 113, 20))
            self.UserNameEdit.setObjectName("UserNameEdit")
            self.ServerAddressLabel = QtWidgets.QLabel(self.centralwidget)
            self.ServerAddressLabel.setGeometry(QtCore.QRect(30, 150, 54, 12))
            self.ServerAddressLabel.setObjectName("ServerAddressLabel")
            self.UsernNameLabel = QtWidgets.QLabel(self.centralwidget)
            self.UsernNameLabel.setGeometry(QtCore.QRect(30, 180, 54, 12))
            self.UsernNameLabel.setObjectName("UsernNameLabel")
            self.PasswordEdit = QtWidgets.QLineEdit(self.centralwidget)
            self.PasswordEdit.setGeometry(QtCore.QRect(110, 210, 113, 20))
            self.PasswordEdit.setObjectName("PasswordEdit")
            self.PasswordLabel = QtWidgets.QLabel(self.centralwidget)
            self.PasswordLabel.setGeometry(QtCore.QRect(30, 210, 54, 12))
            self.PasswordLabel.setObjectName("PasswordLabel")
            self.ServerPathLabel = QtWidgets.QLabel(self.centralwidget)
            self.ServerPathLabel.setGeometry(QtCore.QRect(10, 280, 91, 16))
            self.ServerPathLabel.setObjectName("ServerPathLabel")
            self.ClientPathLabel = QtWidgets.QLabel(self.centralwidget)
            self.ClientPathLabel.setGeometry(QtCore.QRect(10, 250, 91, 16))
            self.ClientPathLabel.setObjectName("ClientPathLabel")
            self.ServerPathEdit = QtWidgets.QLineEdit(self.centralwidget)
            self.ServerPathEdit.setGeometry(QtCore.QRect(110, 280, 113, 20))
            self.ServerPathEdit.setObjectName("ServerPathEdit")
            self.ClientPathEdit = QtWidgets.QLineEdit(self.centralwidget)
            self.ClientPathEdit.setGeometry(QtCore.QRect(110, 250, 113, 20))
            self.ClientPathEdit.setObjectName("ClientPathEdit")
            self.StartSynButton = QtWidgets.QPushButton(self.centralwidget)
            self.StartSynButton.setGeometry(QtCore.QRect(350, 200, 75, 23))
            self.StartSynButton.setObjectName("StartSynButton")
            self.StopSynButton = QtWidgets.QPushButton(self.centralwidget)
            self.StopSynButton.setGeometry(QtCore.QRect(350, 230, 75, 23))
            self.StopSynButton.setObjectName("StopSynButton")
            self.StartSynLabel = QtWidgets.QLabel(self.centralwidget)
            self.StartSynLabel.setGeometry(QtCore.QRect(280, 200, 54, 12))
            self.StartSynLabel.setObjectName("StartSynLabel")
            self.StopSynLabel = QtWidgets.QLabel(self.centralwidget)
            self.StopSynLabel.setGeometry(QtCore.QRect(280, 230, 54, 12))
            self.StopSynLabel.setObjectName("StopSynLabel")
            self.OprationTextBrowser = QtWidgets.QTextBrowser(self.centralwidget)
            self.OprationTextBrowser.setGeometry(QtCore.QRect(120, 390, 311, 151))
            self.OprationTextBrowser.setObjectName("OprationTextBrowser")
            self.OperationLabel = QtWidgets.QLabel(self.centralwidget)
            self.OperationLabel.setGeometry(QtCore.QRect(50, 440, 54, 12))
            self.OperationLabel.setObjectName("OperationLabel")
            MainWindow.setCentralWidget(self.centralwidget)
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
    
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
            self.Text.setText(_translate("MainWindow", "远程文件同步工具"))
            self.ServerAddressLabel.setText(_translate("MainWindow", "服务器IP"))
            self.UsernNameLabel.setText(_translate("MainWindow", "用户名"))
            self.PasswordLabel.setText(_translate("MainWindow", "密码"))
            self.ServerPathLabel.setText(_translate("MainWindow", "服务器同步路径"))
            self.ClientPathLabel.setText(_translate("MainWindow", "客户端同步路径"))
            self.StartSynButton.setText(_translate("MainWindow", "开始同步"))
            self.StopSynButton.setText(_translate("MainWindow", "停止同步"))
            self.StartSynLabel.setText(_translate("MainWindow", "开始同步"))
            self.StopSynLabel.setText(_translate("MainWindow", "停止同步"))
            self.OperationLabel.setText(_translate("MainWindow", "操作信息"))
    
        def lineedit_init(self):
            self.ServerAddressEdit.textChanged.connect(self.check_input_func)
            self.UserNameEdit.textChanged.connect(self.check_input_func)
            self.PasswordEdit.textChanged.connect(self.check_input_func)
            self.ServerPathEdit.textChanged.connect(self.check_input_func)
            self.ClientPathEdit.textChanged.connect(self.check_input_func)
    
        def check_input_func(self):
            if self.ServerAddressEdit.text() and self.UserNameEdit.text() and self.PasswordEdit.text() and \
                self.ClientPathEdit.text() and self.ServerPathEdit.text():
                self.StopSynButton.setEnabled(True)
                self.StartSynButton.setEnabled(True)
            else:
                self.StopSynButton.setEnabled(False)
                self.StartSynButton.setEnabled(False)
    
        def pushbutton_init(self):
            self.StartSynButton.setEnabled(False)
            self.StopSynButton.setEnabled(False)
            self.StartSynButton.clicked.connect(self.StartSyn)
            self.StopSynButton.clicked.connect(self.StopSyn)
        def StartSyn(self):
            ServerAddress = self.ServerAddressEdit.text()
            UserName = self.UserNameEdit.text()
            Password = self.PasswordEdit.text()
            port = 22
            t = paramiko.Transport((ServerAddress, port))
            t.connect(username=UserName, password=Password)
            self.OprationTextBrowser.setText("success link server")
            object = paramiko.SFTPClient.from_transport(t)
            ServerPath=self.ServerPathEdit.text()
            ClientPath=self.ClientPathEdit.text()
            operation=[]
            while True:
                operation=[]
                delete_file(ServerPath,ClientPath, object,ServerAddress,6969,operation)  #同步删除
                copy_file(ServerPath, ClientPath, object,ServerAddress,6969,operation)  #同步获取
                for text in operation:
                    self.OprationTextBrowser.setText(text)
                    time.sleep(0.1)
    
                time.sleep(10)
    
    
        def StopSyn(self):
            self.OprationTextBrowser.setText("success Stop Syn")
            exit()
    class MyWindow(QMainWindow, Ui_MainWindow):
        def __init__(self, parent=None):
            super(MyWindow, self).__init__(parent)
            self.setupUi(self)
            self.pushbutton_init()
            self.lineedit_init()
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        myWin = MyWindow()
        myWin.show()
        sys.exit(app.exec_())
    
    

    使用

    前提条件

    必须保证可以远程登陆服务端
    必须保证可以远程登陆服务端

    服务端配置

    开启Socket_Server
    在这里插入图片描述

    客户端

    运行 Over.py (名字是祈祷不用被老师增加要求,然而还是增加了)
    在这里插入图片描述
    在这里插入图片描述
    这样就成功了!

    展开全文
  • 【Tools】Linux远程连接工具(Xshell6)

    千次阅读 2019-07-26 22:42:49
    00. 目录 文章目录00. 目录01.... Xshell连接Linux步骤07. 附录 01. Xshell6简介 Xshell 是一款功能强大的终端模拟器,支持SSH1,SSH2,SFTP,TELNET,RLOGIN和SERIAL。通过提供业界先进的性能,X...

    00. 目录

    01. Xshell6简介

    Xshell 是一款功能强大的终端模拟器,支持SSH1,SSH2,SFTP,TELNET,RLOGIN和SERIAL。通过提供业界先进的性能,Xshell 包含了其他SSH客户端无法发现的功能和优势。

    02. Xshell6新增功能

    卓越的终端体验

    Xshell支持VT100,VT220,VT320,XTERM,LINUX,SCOANSI和ANSI终端仿真,并提供各种终端外观选项替代传统的远程登录客户端。

    保护数据安全

    在不断变化的网络环境中,采取必要的预防措施来保护您的数据非常重要。Xshell 6支持RSA / DSA / ECDSA / ED25516公钥,密码和键盘交互式用户认证。Xshell 6还包括对PKCS#11的严格要求的支持。 使用不断更新的加密算法列表加密流量,并使用Xshell的主密码功能将会话文件安全地存储在云中。

    轻松管理

    Xshell 6使管理会话比以往更容易。无论您是在2台主机还是200台主机上工作,Xshell的管理功能均可轻松进行比较,并可在多个会话中同时输入命令。通过会话管理器,选项卡式环境,高亮设置,快速命令等功能优化您的工作流程。您可以根据需要自定义Xshell以执行您想要的操作。

    03. Xshell6主要特点

    New!会话管理

    作为主Xmanager和Xshell窗口中的可停靠窗格,您可以立即访问会话管理所需的所有必需品。轻松查看,创建,编辑和删除会话,并同时启动多个会话。管理你的会话从未如此简单!

    New!突出亮点

    在需要捕捉终端输入/输出中的关键字或其他变量时,只处理文本可能会很麻烦。 使用Xshell 6的高亮设置,可以为关键字或正则表达式在输出到终端时创建不可见的视觉线索。 根据您的要求使用用户定义的关键字创建自定义集并将其应用于会话。

    New!组成窗口

    以前,Xshell的Compose Bar允许用户在将其全部发送到终端之前起草一行字符串。Xshell 6引入了支持多行字符串或脚本绘制的撰写窗口。 编辑草稿并将它们同时发送到当前会话或多个会话。将剪贴板内容安全地粘贴到“撰写窗格”中,以查看实际发送到终端的内容,并避免发生任何恶意命令。

    New!支持SSH PKCS#11

    PKCS#11协议使用户能够使用硬件令牌(HSM)安全地存储用户的私钥,以增加安全性。 Xshell 6还支持GSSAPI,密码,公钥和键盘交互式身份验证方法。

    New! ASCII和非ASCII字符的双字体集成

    企业的全球化需要适应不同语言要求的SSH客户端。 Xshell 6允许您为ASCII和非ASCII(中文,韩文等)字符指定单独的字体,以确保输出更加一致和稳定。

    New!水平滚动条

    您可能会遇到长行,用户定义的表单等,这些表单在您的终端中不能很好地进行换行。借助Xshell对水平滚动条的支持,您将看到更简洁的视图,以便更轻松地监控远程服务器。

    New! 使用主密码增强密码加密

    将用户定义的字符串设置为您的主密码,为您的会话文件密码添加一层加密。主密码会加密用于连接到服务器的密码(密码),用户密钥的密码(密码)以及会话文件中包含的密码字符串。 将会话文件安全地存储在云中以在设备之间共享。

    New! 搜索所选文本的网页

    使用用户定义的搜索引擎可以立即在Web上搜索Xshell 6终端中的任何选定字符串。

    New! 各种铃声/闹铃选项

    当监视远程服务器时,用户设置警报以通知他们任何更改,错误等。仅使用基于字符串的警报可能不足以吸引用户。Xshell 6的铃声选项提供了各种声音和屏幕效果,以确保用户能够正确提醒任何更改。

    04. Xshell6主要规格

    4.1 概括

    • 支持SSH1,SSH2,SFTP,TELNET,RLOGIN和SERIAL协议
    • 支持Windows Vista / 7/8/10,Server 2008/2012/2016
    • 支持OpenSSH和ssh.com服务器
    • 支持在单个窗口中具有多个选项卡
    • 支持在单个窗口中显示多个选项卡组
    • 多用户设置
    • 保持活力选项
    • SOCKS4 / 5,HTTP代理连接
    • 自定义键映射
    • VB,Jscript脚本
    • 支持IPv6
    • 支持Kerberos(MIT Keberos,微软SSPI)认证
    • SSH / Telnet跟踪

    4.2 会话管理

    • 提供了一种便捷的方式来管理和运行多个会话
    • 为本地和远程主机创建和管理会话文件
    • 支持会话对话框,地址栏,本地提示,会话快捷方式和链接栏打开会话
    • 提供快速连接提供默认会话
    • 与多个会话同时连接
    • 地址栏支持URL命令,并允许连接到有或没有保存会话的远程主机
    • 支持自动登录和登录脚本
    • 在会话对话框中支持文件夹和树视图
    • 批量更新会话
    • 导入和导出会话

    4.3 安全

    • RSA / DSA / ECDSA / ED25519公钥,密码和键盘交互式用户认证
    • RSA / DSA / ECDSA / ED25519新密钥向导和导入/导出密钥
    • 支持SSH PKCS#11
    • 使用Xagent进行用户认证(SSH用户认证代理)
    • AES128 / 192 / 256,3DES,BLOWFISH,CAST128,ARCFOUR和RIJNDAEL加密算法
    • SHA1,SHA1-96,MD5,MD5-96和RIPEMD160 MAC算法
    • zlib压缩
    • 主机密钥对话框
    • 用户密钥对话框
    • 支持使用主密码来加密密码

    4.4 端口

    • CP / IP和X11转发
    • 使用SOCKS4 / 5动态端口转发
    • 用于观察和管理有源转发通道端口
    • 即时端口添加/删除或修改端口到当前连接的会话

    4.5 本地命令

    • 对于高级用户本地Xshell会提示
    • 本地命令,包括open,ssh,telnet,rlogin,sftp和ftp
    • 本地Windows命令,如ping,ipconfig,netstat和nslookup
    • 在连接期间逃离本地提示

    4.6 终端

    • 基于Unicode的终端缓冲区
    • VT100,VT220,VT320,XTERM,LINUX,SCOANSI和ANSI终端
    • 固定的标准化输出端子尺寸选项
    • 处于固定终端大小时的水平滚动条
    • 多语言输出编码(UTF-8)
    • 撰写栏以将字符串发送到多个会话
    • 撰写窗口用于将多行字符串发送到多个会话
    • 使用正则表达式的字符串搜索
    • 列单位文本选择
    • 在复制和粘贴时支持多字节字符串
    • 在终端窗口中指定双击单词选择的分隔符
    • 三次点击选择一行
    • 粗体字体和ANSI颜色代码
    • Xterm终端鼠标
    • Xterm 256色模式
    • Linux Meta键仿真
    • 打印终端屏幕
    • 在终端窗口中设置行间距和边距
    • 搜索用户指定的Web浏览器以查找选定的文本
    • 各种钟形选项

    4.7 外观

    • 主窗口可停靠UI
    • 主题选择功能
    • 方便而强大的用户界面
    • 支持自定义布局
    • 配色方案编辑/导入/导出功能
    • 更改光标颜色并闪烁
    • 通过字体按钮轻松更改字体
    • 为ASCII和非ASCII字符应用单独的字体
    • 将常用字符串指定为快速命令:快速命令栏,快速命令窗格
    • 工具栏上的可自定义标准按钮
    • 安全锁定,会话选择和网络向上/向下流量信息显示在状态栏中
    • 全屏视图(Alt + Enter)
    • 透明度选项

    4.8 互操作性

    • 与X11转发XManager程序互操作
    • 可与Xagent程序互操作以进行代理验证和转发
    • 可与Xftp程序互操作进行文件传输
    • 在记事本中编辑滚动缓冲区
    • 通过菜单命令顺序选择Xshell窗口

    4.9 字符串传输和文件管理

    • 通过FTP / SFTP发送和接收文件
    • 通过X / Y / Z MODEM发送和接收文件
    • 发送ASCII文件
    • 发送延迟以防止数据丢失
    • 在会话记录期间自动保存并支持各种记录格式
    • 页面设置和打印预览

    05. Xshell6下载

    csdn绿色破解版本下载:Xshell6(绿色破解版).rar

    官方网站下载:http://www.xshellcn.com/xiazai.html

    06. Xshell连接Linux步骤

    Linux系统:Ubuntu18.04

    6.1 首先双击桌面的快捷图标打开该应用程序,在软件的主界面上,左上角有个“文件”菜单,单击并选择“新建”命令。

    在这里插入图片描述

    6.2 在弹出的新建会话属性中,填写名称和主机,名称可以随意写,主机可以为IP地址,其他默认。点击确定。
    在这里插入图片描述

    6.3 如图选择新建后的会话,点击连接按钮。

    在这里插入图片描述

    6.4 在弹出的页面中,填写用户名,选择记住用户名,并点击确定。
    在这里插入图片描述

    6.5 在弹出的SSH用户身份验证窗口中填写密码,并点击确定。

    在这里插入图片描述

    6.6 这样就成功的连接Linux系统了,如下图所示,可以在光标处输入命令了。
    在这里插入图片描述

    07. 附录

    xshell6官方网站http://www.xshellcn.com/

    展开全文
  • 前言:相信都有需要将Linux文件发送到Windows时的需求,那么这时候就可以参考本文了! 注意:工具为 Xshell 6 一、打包 首先使用打包命令,打包指定文件夹tar -czvf test.tar.gz all/* 这里表示打包all文件夹,...
  • 2.linux远程控制命令

    2020-01-02 21:06:17
    1、shutdown 指令 功能:关机,重启 格式:shutdown 选项 时间 选项:[-options] :-r 有则代表重启,没有就是直接关机 ... 备注:一定要加上-r,远程时关机就麻烦了;不指定时间的默认1min后执行;取消命...
  • Linux远程控制服务sshd和scp

    千次阅读 2018-07-01 17:53:50
    1 了解sshd服务 2 使用ssh命令登录主机 3 安全密钥验证 3.1 第一步:使用Xshell生成密钥(在本地主机中生成“密钥对”亦可) 3.2 第二步:上传公钥至服务器中 ...5 远程传输命令 5.1 发送文件 5...
  • 服务器一般是云服务器或者放置在机房,我们日常工作中通过远程连接工具连接到服务器进行操作,这类工具很多(如SecureCRT、XShell、Putty、FinallShell、TeamViewer以及windows10自带的PowerShell等等),本文挑选几...
  • 我们在工作的过程中,通常会遇到新建项目的需要,比如项目经理提出我们需要基于linux-4.18的内核版本创建新项目A的需要,大部分做开发的人员可以会一头雾水了。下述步骤是在ubuntu16.04上执行的结果,其他linux系统...
  • Linux远程传输文件的简单方式

    千次阅读 2018-11-17 17:26:06
    介绍Linux下两个简单且安全的文件传输方式: 一、scp,secure copy的缩写,可以用来远程传输拷贝的文件,并且比较安全(ssh:22) 注意:远程主机ip的存放目录用分号:隔开 1、拷贝文件 scp /home/root/1.txt root@...
  • 如题:用的工具是SSH,首先SSH是什么,这个可以参考百度百科,上面有比较详细的解释,我就不复制黏贴了,我们只要知道它是一种支持多平台(如Linux,Windows)的专门用于远程登录及其他网络服务的工具(或者说是一种...
  • Linux 远程管理常用命令

    千次阅读 2019-04-08 09:10:34
    # 把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop scp -r demo user@remote:Desktop # 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹 scp -r user@remote:Desktop demo 选项 ...
  • Linux远程升级脚本

    2019-10-23 11:58:47
    原创 Linux远程升级脚本 ...
  • ftp连接,显示无法显示远程文件夹

    千次阅读 2020-06-15 17:09:13
    FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP ...
  • Linux使用mount挂载Windows共享文件夹

    万次阅读 2017-05-07 22:22:13
    现实中会有这样的场景 , 开发人员在 Windows 上面写代码 , 然后放到 Linux 进行编译 , 达到这个目的我们可以在 Linux 上使用 mount 命令挂载 Windows 共享文件夹 , 就像将 Windows 里面的共享目录当成一个U盘插到 ...
  • MobaXterm MobaXterm又名MobaXVT,是一款增强型终端、X服务器和Unix命令集(GNU/ Cygwin)工具箱。...它最初是在1969年IP网络的初期发布的,并且长期以来一直是访问远程联网计算机的默认方法。由于该协
  • pscp实现远程文件和文件夹传输

    千次阅读 2009-10-31 12:12:00
    pscp是putty安装包所带的远程文件传输工具,使用和Linux下scp命令相似,具体的使用方法如下: PSCP和SCP功能相同,在windows下使用,只有一个文件,建议将pscp.exe放到C:/WINDOWS/system32下面,这样就可以在任何...
  • 目录 介绍 特征 用法 远程拷贝同步文件、目录 本地到远程 ...远程到本地 ...同步一个文件从本地一个目录到另一个...本文介绍在Linux主机上进行远程和本地传输文件的常见用法,不需要root账户也可以允许rsync。 特...
  • Linux下使用rsync 同步文件夹

    千次阅读 2013-07-09 16:07:59
    Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是...
  • linux本地文件夹上传到hdfs服务器

    千次阅读 2016-07-26 16:25:15
    如果是windows,先把windows的文件夹用pscp -r命令上传到linux服务器,在linux服务器运行上述代码导出的jar包即可。 注意:上述代码是将本地的文件夹下所有子文件夹的所有文件,上传到hdfs的同一个目录下 若想...
  • Session Options --> Terminal --> Emulation界面中,将Emulation下的Terminal下拉条选为Linux,并且勾选ANSI color,会让你的文件和文件夹显示Linux支持的各种颜色,很容易分辨 3. Session Options --> Terminal -...
  • Linux SSH远程登录快速配置

    千次阅读 2015-11-23 03:27:43
    远程登录服务器一般使用ssh协议。常用的登陆方式有两种:1.账号+密码手动验证$ssh user@192.168.1.1 $password:2.公钥+私钥对自动验证(免密登录)$ssh user@192.168.1.1免密登录配置两种登陆方式对比下来第二种方式...
  • Linux文件远程传输scp传输rsync传输Linux打包和压缩文件tar 归档文件(把很多个文件打包成1个文件)压缩和解压缩zip、unzipgz(gzip、gunzip)bz2(bzip2、bunzip2)xz(xz、unxz)归档并压缩,解压并解档 ...
  • QT和linux实现简易远程聊天工具

    千次阅读 2017-08-23 21:16:57
    1.实现功能: 打开客户端有一个登陆窗口,有登陆,注册两种功能(bug肯定很多),登陆成功会在左边显示在线用户数量和列表,点击对应的用户名...解压chat.zip,将linuxserver文件夹复制到服务器上,在shell中执行mak
  • # 将我当前文件夹下wwwroot目录下的所有文件传输到 120.27.71.25 服务器的 /var/www/html文件夹下 rsync -a -c /usr/bin/ssh ./wwwroot/ 120.27.71.25:/var/www/html
  • 找到文件或文件夹位置 如果是文件夹,可以用tar命令打包:tar czvf FileName.tar DirName 移动完成之后的解压:tar zxvf FileName.tar 第三步:开始传输文件: 输入:scp /opt/1.tar test@10.0.0.1:/opt ...
  • 2.用SSH协议远程连接Linux的辅佐工具类。 3.UDP数据包的发送和接收数据类。 4.完整的API文档和Demo示例程序。 使用时请将zy-tools.jar和lib文件夹里的三个jar包导入项目。使用方法可以查看里面的API文档。还是不理解...
  • Linux脚本连接远程服务器下载文件

    千次阅读 2018-04-03 16:46:03
    整个脚本的思路很简单,就是把另一个环境上的最新编译好的代码文件夹打包放到本地目录,将新代码文件夹里面的配置文件替换成原本地配置文件。代码如下:!/bin/ksh Local_dir=$HOME/chouke_test #本地存放UMC文件夹...
  • [231]linux下怎么样上传下载文件夹

    万次阅读 2018-07-04 08:52:30
    Linux下目录复制:本机-&amp;amp;gt;远程服务器 scp -r /home/shaoxiaohu/test1 zhidao@192.168.0.1:/home/test2 ...Linux下目录复制:远程服务器-&amp;amp;gt;本机 scp -r zhidao@192.168.0...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,470
精华内容 12,588
关键字:

linux远程发送文件夹

linux 订阅