netrc 文件格式介绍

发布时间: 更新时间: 总字数:937 阅读时间:2m 作者: IP上海 分享 网址

netrc 文件通常用于存储登录和初始化信息,供 ftprsh 等程序进行自动登录时使用。

介绍

netrc 文件是一个文本文件,其中包含一系列以换行符分隔的记录 (records)。每一条记录都由一系列的词法单元 (tokens) 组成。

关键词 (Keywords)

每条记录通常以一个机器名或特殊的关键字开始,然后跟着用于该机器的登录信息。

关键词 描述
machine name 定义一条用于主机名为 name 的远程机器的记录。随后的 login, password, account 等信息都适用于这台机器。
default 定义一条默认记录。如果找不到特定的 machine 记录,则使用这条记录。它必须是文件中的最后一条 machinedefault 记录。
login name 指定用于自动登录的用户名 name
password string 指定用于自动登录的密码 string注意: 出于安全考虑,强烈建议将此文件设置权限为只有所有者可读写(例如 chmod 600 ~/.netrc)。
account string 指定一个额外的账户信息 string(如果远程主机需要)。
macdef name 定义一个名为 name 的宏。宏体从下一行开始,直到遇到一个空行或文件结束。
proxy name 定义一条用于代理主机名为 name 的远程机器的记录(不常用)。

格式规则

  • 分隔符: 词法单元之间用空格、制表符或换行符分隔。
  • 注释: 大多数实现(尤其是现代的 curlwget不支持行首的 # 作为注释。netrc 文件的原始规范没有定义注释机制。
  • 连续行: 一条记录可以跨越多行。

详细示例

以下是一个典型的 ~/.netrc 文件内容示例。请务必将文件权限设置为 600

# 警告:原始netrc规范不包含注释。大多数ftp客户端会忽略它们,但为安全起见,应避免使用。
# 实际使用时,请移除行首的 # 符号。

# --- 1. 特定机器的记录 ---
# 用于连接到服务器 "ftp.example.com"
machine ftp.example.com
login my_ftp_user
password my_secure_password

# 用于连接到服务器 "backup.internal.lan",使用另一个用户
machine backup.internal.lan
login backup_admin
password admin_secret_pwd

# --- 2. 带有macdef宏的记录 ---
# macdef 用于定义宏,可以自动执行一系列命令。
# 宏体在空行之前结束。
machine upload.docs.com
login doc_uploader
password doc_upload_pwd
macdef init_upload
  binary             # 切换到二进制模式
  cd /incoming       # 切换目录
  lcd /local/files   # 切换本地目录
  prompt off         # 关闭交互式提示
  mput * # 上传所有文件
  quit

# --- 3. default 默认记录 ---
# 如果连接的主机名没有匹配的 machine 记录,则使用这条记录。
# 它必须是文件中的最后一条 machine 或 default 记录。
default
login anonymous
password user@example.com

示例用法(以 ftp 为例)

当您在命令行运行 ftp ftp.example.com 时:

  1. ftp 程序会读取您的 ~/.netrc 文件。
  2. 它会找到 machine ftp.example.com 这条记录。
  3. 它将使用 login my_ftp_userpassword my_secure_password 自动登录,而无需您手动输入。

参考

  • Linux/Unix Man Page: 可以通过命令行查看您系统上的精确文档:

    man 5 netrc
    
本文总阅读量 次 本站总访问量 次 本站总访客数
Home Archives Categories Tags Statistics